In this document, I explore 4 approaches to SVD with Dimkid data:

  1. No mean-centering, characters as rows and capacities as columns
  2. No mean-centering, capacities as rows and characters as columns
  3. Mean-centering by capacity, characters as rows and capacities as columns (the classic approach)
  4. Mean-centering by character, capacities as rows and characters as columns

Factor analysis

[Not shown here.]

Approach #1

In Approach #1 we proceed without mean-centering, with characters as rows and capacities as columns.

Raw data matrix visualizations

Adults

In this study, 431 US adults rated 21 characters (between-subjects) on 40 capacities (within-subjects). (See Weisman, Dweck, & Markman, 2017, PNAS, Study 4.)

7-9yo children

In this study, 123 7- to 9-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

4-6yo children

In this study, 124 4- to 6-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

SVD

Adults

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Children, 7-9y

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Children, 4-6y

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Children, 4-9y

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Scale for 'colour' is already present. Adding another scale for 'colour',
which will replace the existing scale.

Scale for 'colour' is already present. Adding another scale for 'colour',
which will replace the existing scale.

Scale for 'colour' is already present. Adding another scale for 'colour',
which will replace the existing scale.

Approach #2

In Approach #2 we proceed without mean-centering, with capacities as rows and characters as columns.

Raw data matrix visualizations

Adults

In this study, 431 US adults rated 21 characters (between-subjects) on 40 capacities (within-subjects). (See Weisman, Dweck, & Markman, 2017, PNAS, Study 4.)

7-9yo children

In this study, 123 7- to 9-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

4-6yo children

In this study, 124 4- to 6-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

SVD

Adults

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Children, 7-9y

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Children, 4-6y

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Children, 4-9y

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Scale for 'colour' is already present. Adding another scale for 'colour',
which will replace the existing scale.

Scale for 'colour' is already present. Adding another scale for 'colour',
which will replace the existing scale.

Scale for 'colour' is already present. Adding another scale for 'colour',
which will replace the existing scale.

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Approach #3

In Approach #3 we mean-center by capacity, with characters as rows and capacities as columns.

Raw data matrix visualizations

Adults

In this study, 431 US adults rated 21 characters (between-subjects) on 40 capacities (within-subjects). (See Weisman, Dweck, & Markman, 2017, PNAS, Study 4.)

7-9yo children

In this study, 123 7- to 9-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

4-6yo children

In this study, 124 4- to 6-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

SVD

Adults

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Children, 7-9y

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Children, 4-6y

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Children, 4-9y

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Scale for 'colour' is already present. Adding another scale for 'colour',
which will replace the existing scale.

Scale for 'colour' is already present. Adding another scale for 'colour',
which will replace the existing scale.

Scale for 'colour' is already present. Adding another scale for 'colour',
which will replace the existing scale.

Approach #4

In Approach #4 we mean-center by character, with capacities as rows and characters as columns.

Raw data matrix visualizations

Adults

In this study, 431 US adults rated 21 characters (between-subjects) on 40 capacities (within-subjects). (See Weisman, Dweck, & Markman, 2017, PNAS, Study 4.)

7-9yo children

In this study, 123 7- to 9-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

4-6yo children

In this study, 124 4- to 6-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

SVD

Adults

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Children, 7-9y

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Children, 4-6y

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Children, 4-9y

Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions

Scale for 'colour' is already present. Adding another scale for 'colour',
which will replace the existing scale.

Scale for 'colour' is already present. Adding another scale for 'colour',
which will replace the existing scale.

Scale for 'colour' is already present. Adding another scale for 'colour',
which will replace the existing scale.

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

LS0tCnRpdGxlOiAiRGlta2lkOiBTaW5ndWxhciBWYWx1ZSBEZWNvbXBvc2l0aW9uIChTVkQpIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICB0b2NfZGVwdGg6IDMKLS0tCgpgYGB7ciwgaW5jbHVkZSA9IEZ9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSkKYGBgCgpgYGB7ciBzZXR1cCwgaW5jbHVkZSA9IEZ9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHJtcykKbGlicmFyeShwc3ljaCkKYGBgCgpgYGB7ciBkYXRhLCBpbmNsdWRlID0gRn0Kc2V0d2QoIi9Vc2Vycy9rd2Vpc21hbi9Eb2N1bWVudHMvUmVzZWFyY2ggKFN0YW5mb3JkKS9Qcm9qZWN0cy9EaW1raWRfc3ZkL2RpbWtpZF9zdmQvIikKCiMgaW1wb3J0IGRhdGEKZF9hZCA8LSByZWFkLmNzdigiLi9kYXRhL21lYW5zX2FkdWx0cy5jc3YiKSAlPiUgCiAgbXV0YXRlKFggPSBpZmVsc2UoZ3JlcGwoInZlZ2V0YXRpdmUiLCBYKSwgInB2cyIsIGFzLmNoYXJhY3RlcihYKSksCiAgICAgICAgIFggPSBmYWN0b3IoWCwKICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJzdGFwbGVyIiwgImNhciIsICJjb21wdXRlciIsICJyb2JvdCIsICJtaWNyb2JlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaXNoIiwgImJlZXRsZSIsICJibHVlX2pheSIsICJmcm9nIiwgIm1vdXNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnb2F0IiwgImRvZyIsICJiZWFyIiwgImRvbHBoaW4iLCAiZWxlcGhhbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaW1wYW56ZWUiLCAiZmV0dXMiLCAicHZzIiwgImluZmFudCIsICJjaGlsZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWR1bHQiKSkpICU+JQogICAgICAgICAgICAgICAgICAgICMgbGV2ZWxzID0gYygiYWR1bHQiLCAiY2hpbGQiLCAiaW5mYW50IiwgInB2cyIsICJmZXR1cyIsCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICJjaGltcGFuemVlIiwgImVsZXBoYW50IiwgImRvbHBoaW4iLCAiYmVhciIsCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICJkb2ciLCAiZ29hdCIsICJtb3VzZSIsICJmcm9nIiwgImJsdWVfamF5IiwKICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgImJlZXRsZSIsICJmaXNoIiwgIm1pY3JvYmUiLCAicm9ib3QiLCAiY29tcHV0ZXIiLAogICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgICAiY2FyIiwgInN0YXBsZXIiKSkpICU+JQogIHJlbmFtZShjaGFyYWN0ZXIgPSBYKSAlPiUKICBhcnJhbmdlKGNoYXJhY3RlcikKCmRfNzkgPC0gcmVhZC5jc3YoIi4vZGF0YS9tZWFuc183OXkuY3N2IikgJT4lIAogIG11dGF0ZShYID0gZmFjdG9yKFgsCiAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY29tcHV0ZXIiLCAicm9ib3QiLCAiZG9sbCIsICJ0ZWRkeV9iZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWV0bGUiLCAiYmlyZCIsICJtb3VzZSIsICJnb2F0IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZWxlcGhhbnQiKSkpICU+JQogICAgICAgICAgICAgICAgICAgICMgbGV2ZWxzID0gYygiZWxlcGhhbnQiLCAiZ29hdCIsICJtb3VzZSIsICJiaXJkIiwgImJlZXRsZSIsCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICJ0ZWRkeV9iZWFyIiwgImRvbGwiLCAicm9ib3QiLCAiY29tcHV0ZXIiKSkpICU+JQogIHJlbmFtZShjaGFyYWN0ZXIgPSBYKSAlPiUKICBhcnJhbmdlKGNoYXJhY3RlcikKCmRfNDYgPC0gcmVhZC5jc3YoIi4vZGF0YS9tZWFuc180NnkuY3N2IikgJT4lCiAgbXV0YXRlKFggPSBmYWN0b3IoWCwKICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjb21wdXRlciIsICJyb2JvdCIsICJkb2xsIiwgInRlZGR5X2JlYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlZXRsZSIsICJiaXJkIiwgIm1vdXNlIiwgImdvYXQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbGVwaGFudCIpKSkgJT4lCiAgICAgICAgICAgICAgICAgICAgIyBsZXZlbHMgPSBjKCJlbGVwaGFudCIsICJnb2F0IiwgIm1vdXNlIiwgImJpcmQiLCAiYmVldGxlIiwKICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgInRlZGR5X2JlYXIiLCAiZG9sbCIsICJyb2JvdCIsICJjb21wdXRlciIpKSkgJT4lCiAgcmVuYW1lKGNoYXJhY3RlciA9IFgpICU+JQogIGFycmFuZ2UoY2hhcmFjdGVyKQpgYGAKCmBgYHtyIG5hbWVzLCBpbmNsdWRlID0gRn0KIyBzZXQgaXRlbSBhbmQgcHJvcGVydHkgbmFtZXMKY2FwYWNpdHlfbmFtZXNfYWQgPC0gbmFtZXMoZF9hZFstMV0pCmNoYXJhY3Rlcl9uYW1lc19hZCA8LSBsZXZlbHMoZF9hZCRjaGFyYWN0ZXIpCgpjYXBhY2l0eV9uYW1lc19jaCA8LSBuYW1lcyhkXzc5Wy0xXSkKY2hhcmFjdGVyX25hbWVzX2NoIDwtIGxldmVscyhkXzc5JGNoYXJhY3RlcikKYGBgCgpgYGB7ciBmdW5jdGlvbnMsIGluY2x1ZGUgPSBGfQptZWFuX2NlbnRfZnVuIDwtIGZ1bmN0aW9uKGRmLCAKICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IGMoImNhcGFjaXR5IiwgImNoYXJhY3RlciIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9ncm91cCA9IGMoImFkdWx0cyIsICJjaGlsZHJlbiIpKXsKICAKICBpZihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpewogICAgY2FwYWNpdHlfbmFtZXMgPSBjYXBhY2l0eV9uYW1lc19hZAogICAgY2hhcmFjdGVyX25hbWVzID0gY2hhcmFjdGVyX25hbWVzX2FkCiAgfQogIGlmKGFnZV9ncm91cCA9PSAiY2hpbGRyZW4iKXsKICAgIGNhcGFjaXR5X25hbWVzID0gY2FwYWNpdHlfbmFtZXNfY2gKICAgIGNoYXJhY3Rlcl9uYW1lcyA9IGNoYXJhY3Rlcl9uYW1lc19jaAogIH0KICAKICBpZihieSA9PSAiY2FwYWNpdHkiKXsKICAgIG5vdF9ieSA8LSAiY2hhcmFjdGVyIgogIH0KICAKICBpZihieSA9PSAiY2hhcmFjdGVyIil7CiAgICBub3RfYnkgPC0gImNhcGFjaXR5IgogICAgIyBkZiA8LSBkZiAlPiUKICAgICMgICBnYXRoZXIoY2FwYWNpdHksIG1lYW5fcmF0aW5nLCAtY2hhcmFjdGVyKSAlPiUKICAgICMgICBtdXRhdGUoY2FwYWNpdHkgPSBmYWN0b3IoY2FwYWNpdHksIGxldmVscyA9IGNhcGFjaXR5X25hbWVzKSkgJT4lCiAgICAjICAgc3ByZWFkKGNoYXJhY3RlciwgbWVhbl9yYXRpbmcpCiAgfQogIAogIGRmX2NlbnQgPC0gZGYgJT4lCiAgICBnYXRoZXIoY2FwYWNpdHksIG1lYW5fcmF0aW5nLCAtY2hhcmFjdGVyKSAlPiUKICAgIGdyb3VwX2J5Xyhhcy5uYW1lKGJ5KSkgJT4lCiAgICBtdXRhdGUoZ3JvdXBfbWVhbiA9IG1lYW4obWVhbl9yYXRpbmcpLAogICAgICAgICAgIG1lYW5fY2VudCA9IG1lYW5fcmF0aW5nIC0gZ3JvdXBfbWVhbikgJT4lCiAgICB1bmdyb3VwKCkgJT4lCiAgICBzZWxlY3QoLW1lYW5fcmF0aW5nLCAtZ3JvdXBfbWVhbikgJT4lCiAgICBzcHJlYWRfKGtleV9jb2wgPSBieSwKICAgICAgICAgICAgdmFsdWVfY29sID0gIm1lYW5fY2VudCIpICU+JQogICAgZGF0YS5mcmFtZSgpCiAgCiAgcmV0dXJuKGRmX2NlbnQpCn0KClVfZnVuIDwtIGZ1bmN0aW9uKHN2ZCwKICAgICAgICAgICAgICAgICAgYWdlX2dyb3VwID0gYygiYWR1bHRzIiwgImNoaWxkcmVuIiwgImNoaWxkcmVuX2NvbWIiKSwKICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlID0gYyhGQUxTRSwgVFJVRSksCiAgICAgICAgICAgICAgICAgIG11bHRpcGx5ID0gYyhGQUxTRSwgVFJVRSkpewoKICBpZih0cmFuc3Bvc2UgPT0gRkFMU0UpIHsKICAgIGlmKGFnZV9ncm91cCA9PSAiYWR1bHRzIil7eV9uYW1lcyA8LSBjaGFyYWN0ZXJfbmFtZXNfYWR9CiAgICBpZihhZ2VfZ3JvdXAgPT0gImNoaWxkcmVuIil7eV9uYW1lcyA8LSBjaGFyYWN0ZXJfbmFtZXNfY2h9CiAgICBpZihhZ2VfZ3JvdXAgPT0gImNoaWxkcmVuX2NvbWIiKXsKICAgICAgeV9uYW1lcyA8LSBjKHBhc3RlKGNoYXJhY3Rlcl9uYW1lc19jaCwgIjc5Iiwgc2VwID0gIl8iKSwKICAgICAgICAgICAgICAgICAgIHBhc3RlKGNoYXJhY3Rlcl9uYW1lc19jaCwgIjQ2Iiwgc2VwID0gIl8iKSkKICAgIH0KICB9IGVsc2UgaWYodHJhbnNwb3NlID09IFRSVUUpIHsKICAgIGlmKGFnZV9ncm91cCA9PSAiYWR1bHRzIil7eV9uYW1lcyA8LSBjYXBhY2l0eV9uYW1lc19hZH0KICAgIGlmKGFnZV9ncm91cCA9PSAiY2hpbGRyZW4iKXt5X25hbWVzIDwtIGNhcGFjaXR5X25hbWVzX2NofQogICAgaWYoYWdlX2dyb3VwID09ICJjaGlsZHJlbl9jb21iIil7eV9uYW1lcyA8LSBjYXBhY2l0eV9uYW1lc19jaH0KICB9ICAKICAKICBTIDwtIHN2ZCRkCgogIFUgPC0gc3ZkJHUgJT4lIAogICAgZGF0YS5mcmFtZSgpICU+JQogICAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogICAgbXV0YXRlKHByb3BlcnR5ID0gYXMubnVtZXJpYyhwcm9wZXJ0eSksCiAgICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHlfbmFtZXMpKSAlPiUKICAgIGdhdGhlcihtb2RlLCB2YWx1ZSwgLXByb3BlcnR5KSAlPiUKICAgIG11dGF0ZShtb2RlID0gYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoZ3N1YigiWCIsICIiLCBtb2RlKSkpLAogICAgICAgICAgIG1vZGUgPSBpZmVsc2UobW9kZSA8IDEwLCBwYXN0ZTAoIm1vZGVfMCIsIGFzLmNoYXJhY3Rlcihtb2RlKSksIAogICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGUwKCJtb2RlXyIsIGFzLmNoYXJhY3Rlcihtb2RlKSkpKSAKICAKICBpZihtdWx0aXBseSl7CiAgICAgIFV4UyA8LSBVICU+JQogICAgICAgIG11dGF0ZShTID0gZmFjdG9yKG1vZGUsIGxhYmVscyA9IFMpLAogICAgICAgICAgICAgICBTID0gYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoUykpLAogICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICogUykKICAgICAgZGZfZmluYWwgPC0gVXhTCiAgfSBlbHNlIHtkZl9maW5hbCA8LSBVfQogIAogIHJldHVybihkZl9maW5hbCkKCn0KCnBsb3RfVV9mdW4gPC0gZnVuY3Rpb24oc3ZkLAogICAgICAgICAgICAgICAgICAgICAgIGFnZV9ncm91cCA9IGMoImFkdWx0cyIsICJjaGlsZHJlbiIsICJjaGlsZHJlbl9jb21iIiksCiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlID0gYyhGQUxTRSwgVFJVRSksCiAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbHkgPSBjKEZBTFNFLCBUUlVFKSl7CgogIGRmX2ZpbmFsIDwtIFVfZnVuKHN2ZCwgYWdlX2dyb3VwLCB0cmFuc3Bvc2UsIG11bHRpcGx5KQogIAogIHBsb3QgPC0gZ2dwbG90KGRmX2ZpbmFsLCBhZXMoeCA9IG1vZGUsIHkgPSBwcm9wZXJ0eSwgZmlsbCA9IHZhbHVlKSkgKwogICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKHZhbHVlLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gMykgKwogICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZEJ1IiwgZGlyZWN0aW9uID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDE1KSkgKwogICAgdGhlbWVfbWluaW1hbCgpICsKICAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKQogIAogIHJldHVybihwbG90KQp9CgpwbG90X1VfZnVuX3Byb3AgPC0gZnVuY3Rpb24oc3ZkLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9ncm91cCA9IGMoImFkdWx0cyIsICJjaGlsZHJlbiIsICJjaGlsZHJlbl9jb21iIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGx5ID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmFfY29sb3JzID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKXsKICAKICBkZl9wbG90IDwtIFVfZnVuKHN2ZCwgYWdlX2dyb3VwLCB0cmFuc3Bvc2UsIG11bHRpcGx5KSAlPiUKICAgIGZpbHRlcihtb2RlICVpbiUgbW9kZXMpCiAgCiAgaWYobXVsdGlwbHkgPT0gVFJVRSl7CiAgICBkZl9wbG90IDwtIGRmX3Bsb3QgJT4lIHNlbGVjdCgtUykKICB9CiAgCiAgaWYoZWZhX2NvbG9ycyA9PSBUUlVFKXsKICAgIGlmKGFnZV9ncm91cCA9PSAiYWR1bHRzIil7Y29sb3JzIDwtIGVmYV9jb2xvcnNfYWR9CiAgICBpZihhZ2VfZ3JvdXAgPT0gImNoaWxkcmVuIil7Y29sb3JzIDwtIGVmYV9jb2xvcnNfNzl9CiAgICBpZihhZ2VfZ3JvdXAgPT0gImNoaWxkcmVuX2NvbWIiKXtjb2xvcnMgPC0gZWZhX2NvbG9yc183OX0KICAgIGRmX3Bsb3QgPC0gZGZfcGxvdCAlPiUKICAgICAgZnVsbF9qb2luKGNvbG9ycyAlPiUgCiAgICAgICAgICAgICAgICAgIGRpc3RpbmN0KGNhcGFjaXR5LCBmYWN0b3IpICU+JSAKICAgICAgICAgICAgICAgICAgcmVuYW1lKHByb3BlcnR5ID0gY2FwYWNpdHkpKSAlPiUKICAgICAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKQogIH0gZWxzZSB7CiAgICBkZl9wbG90IDwtIGRmX3Bsb3QgJT4lCiAgICAgIG11dGF0ZShmYWN0b3IgPSAibm9uZSIsCiAgICAgICAgICAgICBmYWN0b3IgPSBmYWN0b3IoZmFjdG9yKSkKICB9CgogIGlmKGVmYV9jb2xvcnMgPT0gVFJVRSl7CiAgICBwbG90IDwtIGRmX3Bsb3QgJT4lCiAgICAgICAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICAgICAgICBnZ3Bsb3QoYWVzKHggPSAuWzNdLCB5ID0gLls0XSwgbGFiZWwgPSBwcm9wZXJ0eSwgY29sb3IgPSBmYWN0b3IpKSArCiAgICAgICAgZ2VvbV9wb2ludCgpICsKICAgICAgICBnZ3JlcGVsOjpnZW9tX3RleHRfcmVwZWwoc2l6ZSA9IDMpICsKICAgICAgICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgICAgICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMTAwLCAxMDAsIC4xKSkgKwogICAgICAgIHRoZW1lX21pbmltYWwoKQoKICAgIGlmKGFnZV9ncm91cCA9PSAiYWR1bHRzIil7CiAgICAgIHBsb3QgPC0gcGxvdCArCiAgICAgICAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIpCiAgICB9IGVsc2UgewogICAgICBwbG90IDwtIHBsb3QgKyAKICAgICAgICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiIzM3N2ViOCIsICIjNGRhZjRhIiwgIiNlNDFhMWMiKSkKICAgIH0KICB9IGVsc2UgewogICAgcGxvdCA8LSBkZl9wbG90ICU+JQogICAgICBzcHJlYWQobW9kZSwgdmFsdWUpICU+JQogICAgICBnZ3Bsb3QoYWVzKHggPSAuWzNdLCB5ID0gLls0XSwgbGFiZWwgPSBwcm9wZXJ0eSwgY29sb3IgPSBwcm9wZXJ0eSkpICsKICAgICAgZ2VvbV9wb2ludCgpICsKICAgICAgZ2dyZXBlbDo6Z2VvbV90ZXh0X3JlcGVsKHNpemUgPSAzKSArCiAgICAgIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoLTEwMCwgMTAwLCAuMSkpICsKICAgICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMTAwLCAxMDAsIC4xKSkgKwogICAgICB0aGVtZV9taW5pbWFsKCkgKwogICAgICBzY2FsZV9jb2xvcl9tYW51YWwoZ3VpZGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSByZXAoImJsYWNrIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoKGxldmVscyhkZl9wbG90JHByb3BlcnR5KSkpKQogIH0KICAKICByZXR1cm4ocGxvdCkKICAKfQoKcGxvdF9TX2Z1biA8LSBmdW5jdGlvbihzdmQpewogIAogIFMgPC0gZGlhZyh4ID0gc3ZkJGQsIG5yb3cgPSBsZW5ndGgoc3ZkJGQpLCBuY29sID0gbGVuZ3RoKHN2ZCRkKSkgJT4lCiAgICBkYXRhLmZyYW1lKCkgJT4lCiAgICByb3duYW1lc190b19jb2x1bW4oIm1vZGVBIikgJT4lCiAgICBnYXRoZXIobW9kZUIsIHZhbHVlLCAtbW9kZUEpICU+JQogICAgbXV0YXRlKG1vZGVBID0gaWZlbHNlKGFzLm51bWVyaWMobW9kZUEpIDwgMTAsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlMCgibW9kZV8wIiwgYXMuY2hhcmFjdGVyKG1vZGVBKSksIAogICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlMCgibW9kZV8iLCBhcy5jaGFyYWN0ZXIobW9kZUEpKSksCiAgICAgICAgICAgbW9kZUIgPSBnc3ViKCJYIiwgIiIsIG1vZGVCKSwKICAgICAgICAgICBtb2RlQiA9IGlmZWxzZShhcy5udW1lcmljKG1vZGVCKSA8IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlMCgibW9kZV8wIiwgYXMuY2hhcmFjdGVyKG1vZGVCKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGUwKCJtb2RlXyIsIGFzLmNoYXJhY3Rlcihtb2RlQikpKSkKICAKICBwbG90IDwtIGdncGxvdChTLCBhZXMoeCA9IG1vZGVBLCAKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIobW9kZUIsIGRlc2MobW9kZUIpKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSB2YWx1ZSkpICsKICAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZCh2YWx1ZSwgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDMpICsKICAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmVkcyIsIGRpcmVjdGlvbiA9IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDE1KSkgKwogICAgdGhlbWVfbWluaW1hbCgpICsKICAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKQogIAogIHJldHVybihwbG90KQp9CgpWX2Z1biA8LSBmdW5jdGlvbihzdmQsCiAgICAgICAgICAgICAgICAgIGFnZV9ncm91cCA9IGMoImFkdWx0cyIsICJjaGlsZHJlbiIsICJjaGlsZHJlbl9jb21iIiksCiAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSA9IGMoRkFMU0UsIFRSVUUpLAogICAgICAgICAgICAgICAgICBtdWx0aXBseSA9IGMoRkFMU0UsIFRSVUUpKXsKCiAgaWYodHJhbnNwb3NlID09IEZBTFNFKSB7CiAgICBpZihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpe3lfbmFtZXMgPC0gY2FwYWNpdHlfbmFtZXNfYWR9CiAgICBpZihhZ2VfZ3JvdXAgPT0gImNoaWxkcmVuIil7eV9uYW1lcyA8LSBjYXBhY2l0eV9uYW1lc19jaH0KICAgIGlmKGFnZV9ncm91cCA9PSAiY2hpbGRyZW5fY29tYiIpe3lfbmFtZXMgPC0gY2FwYWNpdHlfbmFtZXNfY2h9CiAgfSBlbHNlIGlmKHRyYW5zcG9zZSA9PSBUUlVFKSB7CiAgICBpZihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpe3lfbmFtZXMgPC0gY2hhcmFjdGVyX25hbWVzX2FkfQogICAgaWYoYWdlX2dyb3VwID09ICJjaGlsZHJlbiIpe3lfbmFtZXMgPC0gY2hhcmFjdGVyX25hbWVzX2NofQogICAgaWYoYWdlX2dyb3VwID09ICJjaGlsZHJlbl9jb21iIil7CiAgICAgIHlfbmFtZXMgPC0gYyhwYXN0ZShjaGFyYWN0ZXJfbmFtZXNfY2gsICI3OSIsIHNlcCA9ICJfIiksCiAgICAgICAgICAgICAgICAgICBwYXN0ZShjaGFyYWN0ZXJfbmFtZXNfY2gsICI0NiIsIHNlcCA9ICJfIikpCiAgICB9CiAgfQogIAogIFMgPC0gc3ZkJGQKCiAgViA8LSBzdmQkdiAlPiUgCiAgICBkYXRhLmZyYW1lKCkgJT4lCiAgICByb3duYW1lc190b19jb2x1bW4oIml0ZW0iKSAlPiUKICAgIG11dGF0ZShpdGVtID0gYXMubnVtZXJpYyhpdGVtKSwKICAgICAgICAgICBpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IHlfbmFtZXMpKSAlPiUKICAgIGdhdGhlcihtb2RlLCB2YWx1ZSwgLWl0ZW0pICU+JQogICAgbXV0YXRlKG1vZGUgPSBhcy5udW1lcmljKGFzLmNoYXJhY3Rlcihnc3ViKCJYIiwgIiIsIG1vZGUpKSksCiAgICAgICAgICAgbW9kZSA9IGlmZWxzZShtb2RlIDwgMTAsIHBhc3RlMCgibW9kZV8wIiwgYXMuY2hhcmFjdGVyKG1vZGUpKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBwYXN0ZTAoIm1vZGVfIiwgYXMuY2hhcmFjdGVyKG1vZGUpKSkpIAogIAogIGlmKG11bHRpcGx5KXsKICAgICAgVnhTIDwtIFYgJT4lCiAgICAgICAgbXV0YXRlKFMgPSBmYWN0b3IobW9kZSwgbGFiZWxzID0gUyksCiAgICAgICAgICAgICAgIFMgPSBhcy5udW1lcmljKGFzLmNoYXJhY3RlcihTKSksCiAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgKiBTKQogICAgICBkZl9maW5hbCA8LSBWeFMKICB9IGVsc2Uge2RmX2ZpbmFsIDwtIFZ9CiAgCiAgcmV0dXJuKGRmX2ZpbmFsKQp9CgpwbG90X1ZfZnVuIDwtIGZ1bmN0aW9uKHN2ZCwKICAgICAgICAgICAgICAgICAgICAgICBhZ2VfZ3JvdXAgPSBjKCJhZHVsdHMiLCAiY2hpbGRyZW4iLCAiY2hpbGRyZW5fY29tYiIpLAogICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSA9IGMoRkFMU0UsIFRSVUUpLAogICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGx5ID0gYyhGQUxTRSwgVFJVRSkpewoKICBkZl9maW5hbCA8LSBWX2Z1bihzdmQsIGFnZV9ncm91cCwgdHJhbnNwb3NlLCBtdWx0aXBseSkKICAKICBwbG90IDwtIGdncGxvdChkZl9maW5hbCwgYWVzKHggPSBtb2RlLCB5ID0gaXRlbSwgZmlsbCA9IHZhbHVlKSkgKwogICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKHZhbHVlLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gMykgKwogICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZEJ1IiwgZGlyZWN0aW9uID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDE1KSkgKwogICAgdGhlbWVfbWluaW1hbCgpICsKICAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKQogIAogIHJldHVybihwbG90KQp9CgpwbG90X1ZfZnVuX2l0ZW0gPC0gZnVuY3Rpb24oc3ZkLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9ncm91cCA9IGMoImFkdWx0cyIsICJjaGlsZHJlbiIsICJjaGlsZHJlbl9jb21iIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGx5ID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmFfY29sb3JzID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKXsKICAKICBkZl9wbG90IDwtIFZfZnVuKHN2ZCwgYWdlX2dyb3VwLCB0cmFuc3Bvc2UsIG11bHRpcGx5KSAlPiUKICAgIGZpbHRlcihtb2RlICVpbiUgbW9kZXMpCiAgCiAgaWYobXVsdGlwbHkgPT0gVFJVRSl7CiAgICBkZl9wbG90IDwtIGRmX3Bsb3QgJT4lIHNlbGVjdCgtUykKICB9CiAgCiAgaWYoZWZhX2NvbG9ycyA9PSBUUlVFKXsKICAgIGlmKGFnZV9ncm91cCA9PSAiYWR1bHRzIil7Y29sb3JzIDwtIGVmYV9jb2xvcnNfYWR9CiAgICBpZihhZ2VfZ3JvdXAgPT0gImNoaWxkcmVuIil7Y29sb3JzIDwtIGVmYV9jb2xvcnNfNzl9CiAgICBpZihhZ2VfZ3JvdXAgPT0gImNoaWxkcmVuX2NvbWIiKXtjb2xvcnMgPC0gZWZhX2NvbG9yc183OX0KICAgIGRmX3Bsb3QgPC0gZGZfcGxvdCAlPiUKICAgICAgZnVsbF9qb2luKGNvbG9ycyAlPiUgCiAgICAgICAgICAgICAgICAgIGRpc3RpbmN0KGNhcGFjaXR5LCBmYWN0b3IpICU+JSAKICAgICAgICAgICAgICAgICAgcmVuYW1lKGl0ZW0gPSBjYXBhY2l0eSkpICU+JQogICAgICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvcikpCiAgfSBlbHNlIHsKICAgIGRmX3Bsb3QgPC0gZGZfcGxvdCAlPiUKICAgICAgbXV0YXRlKGZhY3RvciA9ICJub25lIiwKICAgICAgICAgICAgIGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKQogIH0KCiAgaWYoZWZhX2NvbG9ycyA9PSBUUlVFKXsKCiAgICBwbG90IDwtIGRmX3Bsb3QgJT4lCiAgICAgIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgICAgIGdncGxvdChhZXMoeCA9IC5bM10sIHkgPSAuWzRdLCBsYWJlbCA9IGl0ZW0sIGNvbG9yID0gZmFjdG9yKSkgKwogICAgICBnZW9tX3BvaW50KCkgKwogICAgICBnZ3JlcGVsOjpnZW9tX3RleHRfcmVwZWwoc2l6ZSA9IDMpICsKICAgICAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMTAwLCAxMDAsIC4xKSkgKwogICAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgICAgIHRoZW1lX21pbmltYWwoKQogICAgCiAgICBpZihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpewogICAgICBwbG90IDwtIHBsb3QgKyAKICAgICAgICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJTZXQxIikKICAgIH0gZWxzZSB7CiAgICAgIHBsb3QgPC0gcGxvdCArIAogICAgICAgIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCIjMzc3ZWI4IiwgIiM0ZGFmNGEiLCAiI2U0MWExYyIpKQogICAgfQogIH0gZWxzZSB7CiAgICBwbG90IDwtIGRmX3Bsb3QgJT4lCiAgICAgIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgICAgIGdncGxvdChhZXMoeCA9IC5bM10sIHkgPSAuWzRdLCBsYWJlbCA9IGl0ZW0sIGNvbG9yID0gaXRlbSkpICsKICAgICAgZ2VvbV9wb2ludCgpICsKICAgICAgZ2dyZXBlbDo6Z2VvbV90ZXh0X3JlcGVsKHNpemUgPSAzKSArCiAgICAgIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoLTEwMCwgMTAwLCAuMSkpICsKICAgICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMTAwLCAxMDAsIC4xKSkgKwogICAgICB0aGVtZV9taW5pbWFsKCkgKwogICAgICBzY2FsZV9jb2xvcl9tYW51YWwoZ3VpZGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSByZXAoImJsYWNrIiwgbGVuZ3RoKGxldmVscyhkZl9wbG90JGl0ZW0pKSkpCiAgfQogIAogIHJldHVybihwbG90KQogIAp9CgpyZWNvbnN0cnVjdF9mdW4gPC0gZnVuY3Rpb24oc3ZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlX2dyb3VwID0gYygiYWR1bHRzIiwgImNoaWxkcmVuIiwgImNoaWxkcmVuX2NvbWIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSA9IGMoRkFMU0UsIFRSVUUpKXsKCiAgaWYoYWdlX2dyb3VwID09ICJhZHVsdHMiKXsKICAgICAgY2FwYWNpdHlfbmFtZXMgPC0gY2FwYWNpdHlfbmFtZXNfYWQKICAgICAgY2hhcmFjdGVyX25hbWVzIDwtIGNoYXJhY3Rlcl9uYW1lc19hZAogIH0KICBpZihhZ2VfZ3JvdXAgPT0gImNoaWxkcmVuIil7CiAgICAgIGNhcGFjaXR5X25hbWVzIDwtIGNhcGFjaXR5X25hbWVzX2NoCiAgICAgIGNoYXJhY3Rlcl9uYW1lcyA8LSBjaGFyYWN0ZXJfbmFtZXNfY2gKICB9CiAgaWYoYWdlX2dyb3VwID09ICJjaGlsZHJlbl9jb21iIil7CiAgICBjYXBhY2l0eV9uYW1lcyA8LSBjYXBhY2l0eV9uYW1lc19jaAogICAgY2hhcmFjdGVyX25hbWVzIDwtIGMocGFzdGUoY2hhcmFjdGVyX25hbWVzX2NoLCAiNzkiLCBzZXAgPSAiXyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGUoY2hhcmFjdGVyX25hbWVzX2NoLCAiNDYiLCBzZXAgPSAiXyIpKQogIH0KICAKICBpZih0cmFuc3Bvc2UgPT0gRkFMU0UpewogICAgeF9uYW1lcyA8LSBjYXBhY2l0eV9uYW1lcwogICAgeV9uYW1lcyA8LSBjaGFyYWN0ZXJfbmFtZXMKICB9CgogIGlmKHRyYW5zcG9zZSA9PSBUUlVFKXsKICAgIHhfbmFtZXMgPC0gY2hhcmFjdGVyX25hbWVzCiAgICB5X25hbWVzIDwtIGNhcGFjaXR5X25hbWVzCiAgfQogIAogICMgY2FsY3VsYXRlIG91dGVyIHByb2R1Y3RzLCBtdWx0aXBseSBieSBzaW5ndWxhciB2YWx1ZQogIE9QIDwtIGxpc3QoKQogIGZvcihpIGluIDE6bGVuZ3RoKHN2ZCRkKSl7CiAgICBPUFtbaV1dIDwtIG91dGVyKHN2ZCR1WyxpXSwgc3ZkJHZbLGldKSAqIHN2ZCRkW2ldCiAgfQogIAogICMgYWRkIHRvZ2V0aGVyCiAgT1Bfc3VtIDwtIFJlZHVjZSgiKyIsIE9QKSAlPiUKICAgIGRhdGEuZnJhbWUoKSAlPiUKICAgIHJvd25hbWVzX3RvX2NvbHVtbigieSIpICU+JQogICAgbXV0YXRlKHkgPSBmYWN0b3IoYXMubnVtZXJpYyh5KSwgbGFiZWxzID0geV9uYW1lcykpICU+JQogICAgZ2F0aGVyKHgsIHZhbHVlLCAteSkgJT4lCiAgICBtdXRhdGUoeCA9IGdzdWIoIlgiLCAiIiwgeCksCiAgICAgICAgICAgeCA9IGZhY3Rvcihhcy5udW1lcmljKHgpLCBsYWJlbHMgPSB4X25hbWVzKSkKICAKICByZXR1cm4oT1Bfc3VtKQp9CgpwbG90X3JlY29uc3RydWN0X2Z1biA8LSBmdW5jdGlvbihzdmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9ncm91cCA9IGMoImFkdWx0cyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZHJlbiIsICJjaGlsZHJlbl9jb21iIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSA9IGMoRkFMU0UsIFRSVUUpKXsKCiAgT1Bfc3VtIDwtIHJlY29uc3RydWN0X2Z1bihzdmQsIGFnZV9ncm91cCwgdHJhbnNwb3NlKQoKICBwbG90IDwtIGdncGxvdChPUF9zdW0sIGFlcyh4ID0geCwgeSA9IHksIGZpbGwgPSB2YWx1ZSkpICsKICAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZCh2YWx1ZSwgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDMpICsKICAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRCdSIsIGRpcmVjdGlvbiA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAxNSkpICsKICAgIHRoZW1lX21pbmltYWwoKSArCiAgICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkKICAKICByZXR1cm4ocGxvdCkKfQpgYGAKCgpJbiB0aGlzIGRvY3VtZW50LCBJIGV4cGxvcmUgNCBhcHByb2FjaGVzIHRvIFNWRCB3aXRoIERpbWtpZCBkYXRhOgoKMS4gTm8gbWVhbi1jZW50ZXJpbmcsIGNoYXJhY3RlcnMgYXMgcm93cyBhbmQgY2FwYWNpdGllcyBhcyBjb2x1bW5zCjIuIE5vIG1lYW4tY2VudGVyaW5nLCBjYXBhY2l0aWVzIGFzIHJvd3MgYW5kIGNoYXJhY3RlcnMgYXMgY29sdW1ucwozLiBNZWFuLWNlbnRlcmluZyBieSBjYXBhY2l0eSwgY2hhcmFjdGVycyBhcyByb3dzIGFuZCBjYXBhY2l0aWVzIGFzIGNvbHVtbnMgKHRoZSBjbGFzc2ljIGFwcHJvYWNoKQo0LiBNZWFuLWNlbnRlcmluZyBieSBjaGFyYWN0ZXIsIGNhcGFjaXRpZXMgYXMgcm93cyBhbmQgY2hhcmFjdGVycyBhcyBjb2x1bW5zCgoKIyBGYWN0b3IgYW5hbHlzaXMKCltOb3Qgc2hvd24gaGVyZS5dCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDksIGluY2x1ZGUgPSBGfQplZmFfbG9hZGluZ3NfYWQgPC0gZmEoZF9hZCAlPiUgY29sdW1uX3RvX3Jvd25hbWVzKCJjaGFyYWN0ZXIiKSwKICAgICAgICAgICAgICAgICAgICAgbmZhY3RvcnMgPSAzLCByb3RhdGUgPSAidmFyaW1heCIpJGxvYWRpbmdzW10gJT4lCiAgZmEuc29ydCgpICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJvcmRlciIpICU+JQogIG11dGF0ZShvcmRlciA9IGFzLm51bWVyaWMob3JkZXIpKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtYyhjYXBhY2l0eSwgb3JkZXIpKQoKZWZhX2NvbG9yc19hZCA8LSBlZmFfbG9hZGluZ3NfYWQgJT4lCiAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogIHRvcF9uKDEsIGFicyhsb2FkaW5nKSkKCmdncGxvdChlZmFfbG9hZGluZ3NfYWQsCiAgICAgICBhZXMoeCA9IGZhY3RvciwgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwKICAgICAgICAgICBmaWxsID0gbG9hZGluZywgbGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIGRpZ2l0cyA9IDIpKSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBnZW9tX3RleHQoc2l6ZSA9IDMpICsKICBhbm5vdGF0ZSgicmVjdCIsIHhtaW4gPSAwLjUsIHhtYXggPSAxLjUsIHltaW4gPSAyMC41LCB5bWF4ID0gNDAuNSwgCiAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIpICsKICBhbm5vdGF0ZSgicmVjdCIsIHhtaW4gPSAxLjUsIHhtYXggPSAyLjUsIHltaW4gPSA5LjUsIHltYXggPSAyMC41LCAKICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIikgKwogIGFubm90YXRlKCJyZWN0IiwgeG1pbiA9IDIuNSwgeG1heCA9IDMuNSwgeW1pbiA9IDAuNSwgeW1heCA9IDkuNSwgCiAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLAogICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIoYmFyaGVpZ2h0ID0gMTUpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBsYWJzKHRpdGxlID0gIkVGQTogQWR1bHRzIiwKICAgICAgIHggPSAiRmFjdG9yIiwgeSA9ICJDYXBhY2l0eSIsIGZpbGwgPSAiTG9hZGluZyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5LCBpbmNsdWRlID0gRn0KZWZhX2xvYWRpbmdzXzc5IDwtIGZhKGRfNzkgJT4lIGNvbHVtbl90b19yb3duYW1lcygiY2hhcmFjdGVyIiksCiAgICAgICAgICAgICAgICAgICAgIG5mYWN0b3JzID0gMywgcm90YXRlID0gInZhcmltYXgiKSRsb2FkaW5nc1tdICU+JQogIGZhLnNvcnQoKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigib3JkZXIiKSAlPiUKICBtdXRhdGUob3JkZXIgPSBhcy5udW1lcmljKG9yZGVyKSkgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWMoY2FwYWNpdHksIG9yZGVyKSkKCmVmYV9jb2xvcnNfNzkgPC0gZWZhX2xvYWRpbmdzXzc5ICU+JQogIGdyb3VwX2J5KGNhcGFjaXR5KSAlPiUKICB0b3BfbigxLCBhYnMobG9hZGluZykpCgpnZ3Bsb3QoZWZhX2xvYWRpbmdzXzc5LAogICAgICAgYWVzKHggPSBmYWN0b3IsIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksCiAgICAgICAgICAgZmlsbCA9IGxvYWRpbmcsIGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBkaWdpdHMgPSAyKSkpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV90ZXh0KHNpemUgPSAzKSArCiAgYW5ub3RhdGUoInJlY3QiLCB4bWluID0gMi41LCB4bWF4ID0gMy41LCB5bWluID0gMTQuNSwgeW1heCA9IDIwLjUsIAogICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siKSArCiAgYW5ub3RhdGUoInJlY3QiLCB4bWluID0gMC41LCB4bWF4ID0gMS41LCB5bWluID0gNi41LCB5bWF4ID0gMTQuNSwgCiAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIpICsKICBhbm5vdGF0ZSgicmVjdCIsIHhtaW4gPSAxLjUsIHhtYXggPSAyLjUsIHltaW4gPSAwLjUsIHltYXggPSA2LjUsIAogICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siKSArCiAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDE1KSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgbGFicyh0aXRsZSA9ICJFRkE6IENoaWxkcmVuLCA3LTl5IiwKICAgICAgIHggPSAiRmFjdG9yIiwgeSA9ICJDYXBhY2l0eSIsIGZpbGwgPSAiTG9hZGluZyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5LCBpbmNsdWRlID0gRn0KZWZhX2xvYWRpbmdzXzQ2IDwtIGZhKGRfNDYgJT4lIGNvbHVtbl90b19yb3duYW1lcygiY2hhcmFjdGVyIiksCiAgICAgICAgICAgICAgICAgICAgIG5mYWN0b3JzID0gMywgcm90YXRlID0gInZhcmltYXgiKSRsb2FkaW5nc1tdICU+JQogIGZhLnNvcnQoKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigib3JkZXIiKSAlPiUKICBtdXRhdGUob3JkZXIgPSBhcy5udW1lcmljKG9yZGVyKSkgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWMoY2FwYWNpdHksIG9yZGVyKSkKCmVmYV9jb2xvcnNfNDYgPC0gZWZhX2xvYWRpbmdzXzQ2ICU+JQogIGdyb3VwX2J5KGNhcGFjaXR5KSAlPiUKICB0b3BfbigxLCBhYnMobG9hZGluZykpCgpnZ3Bsb3QoZWZhX2xvYWRpbmdzXzQ2LAogICAgICAgYWVzKHggPSBmYWN0b3IsIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksCiAgICAgICAgICAgZmlsbCA9IGxvYWRpbmcsIGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBkaWdpdHMgPSAyKSkpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV90ZXh0KHNpemUgPSAzKSArCiAgYW5ub3RhdGUoInJlY3QiLCB4bWluID0gMC41LCB4bWF4ID0gMS41LCB5bWluID0gOC41LCB5bWF4ID0gMjAuNSwgCiAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIpICsKICBhbm5vdGF0ZSgicmVjdCIsIHhtaW4gPSAyLjUsIHhtYXggPSAzLjUsIHltaW4gPSAzLjUsIHltYXggPSA4LjUsIAogICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siKSArCiAgYW5ub3RhdGUoInJlY3QiLCB4bWluID0gMS41LCB4bWF4ID0gMi41LCB5bWluID0gMC41LCB5bWF4ID0gMy41LCAKICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIikgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAxNSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnModGl0bGUgPSAiRUZBOiBDaGlsZHJlbiwgNC02eSIsCiAgICAgICB4ID0gIkZhY3RvciIsIHkgPSAiQ2FwYWNpdHkiLCBmaWxsID0gIkxvYWRpbmciKQpgYGAKCgojIEFwcHJvYWNoICMxCgpJbiBBcHByb2FjaCAjMSB3ZSBwcm9jZWVkIHdpdGhvdXQgbWVhbi1jZW50ZXJpbmcsIHdpdGggY2hhcmFjdGVycyBhcyByb3dzIGFuZCBjYXBhY2l0aWVzIGFzIGNvbHVtbnMuCgojIyBSYXcgZGF0YSBtYXRyaXggdmlzdWFsaXphdGlvbnMgey50YWJzZXR9CgojIyMgQWR1bHRzCgpJbiB0aGlzIHN0dWR5LCA0MzEgVVMgYWR1bHRzIHJhdGVkIDIxIGNoYXJhY3RlcnMgKGJldHdlZW4tc3ViamVjdHMpIG9uIDQwIGNhcGFjaXRpZXMgKHdpdGhpbi1zdWJqZWN0cykuIChTZWUgV2Vpc21hbiwgRHdlY2ssICYgTWFya21hbiwgMjAxNywgX1BOQVNfLCBTdHVkeSA0LikKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC42N30KZF9hZCAlPiUKICBnYXRoZXIoY2FwYWNpdHksIG1lYW5fcmF0aW5nLCAtY2hhcmFjdGVyKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBjYXBhY2l0eSwgeSA9IGNoYXJhY3RlciwgZmlsbCA9IG1lYW5fcmF0aW5nKSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJibGFjayIsIGhpZ2ggPSAid2hpdGUiLCAjIGxpbWl0cyA9IGMoLTMsIDMpLAogICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAxNSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgbGFicyh0aXRsZSA9ICJSYXcgZGF0YTogQWR1bHRzIiwKICAgICAgIHN1YnRpdGxlID0gIjIxIGNoYXJhY3RlcnMsIDQwIGNhcGFjaXRpZXMiLAogICAgICAgeCA9ICJDYXBhY2l0eSIsCiAgICAgICB5ID0gIkNoYXJhY3RlciIsCiAgICAgICBmaWxsID0gIk1lYW4gcmF0aW5nIikKYGBgCgojIyMgNy05eW8gY2hpbGRyZW4KCkluIHRoaXMgc3R1ZHksIDEyMyA3LSB0byA5LXllYXItb2xkIFVTIGNoaWxkcmVuIHJhdGVkIDkgY2hhcmFjdGVycyAoYmV0d2Vlbi1zdWJqZWN0cykgb24gMjAgY2FwYWNpdGllcyAod2l0aGluIHN1YmplY3RzKS4gKFNlZSBXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCAyMDE4LCBfUHJvYy4gQ29nU2NpXy4pCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNjd9CmRfNzkgJT4lCiAgZ2F0aGVyKGNhcGFjaXR5LCBtZWFuX3JhdGluZywgLWNoYXJhY3RlcikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gY2FwYWNpdHksIHkgPSBjaGFyYWN0ZXIsIGZpbGwgPSBtZWFuX3JhdGluZykpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAiYmxhY2siLCBoaWdoID0gIndoaXRlIiwgIyBsaW1pdHMgPSBjKDAsIDEpLAogICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAxNSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgbGFicyh0aXRsZSA9ICJSYXcgZGF0YTogNy0gdG8gOS15ZWFyLW9sZCBjaGlsZHJlbiIsCiAgICAgICBzdWJ0aXRsZSA9ICI5IGNoYXJhY3RlcnMsIDIwIGNhcGFjaXRpZXMiLAogICAgICAgeCA9ICJDYXBhY2l0eSIsCiAgICAgICB5ID0gIkNoYXJhY3RlciIsCiAgICAgICBmaWxsID0gIk1lYW4gcmF0aW5nIikKYGBgCgojIyMgNC02eW8gY2hpbGRyZW4KCkluIHRoaXMgc3R1ZHksIDEyNCA0LSB0byA2LXllYXItb2xkIFVTIGNoaWxkcmVuIHJhdGVkIDkgY2hhcmFjdGVycyAoYmV0d2Vlbi1zdWJqZWN0cykgb24gMjAgY2FwYWNpdGllcyAod2l0aGluIHN1YmplY3RzKS4gKFNlZSBXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCAyMDE4LCBfUHJvYy4gQ29nU2NpXy4pCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNjd9CmRfNDYgJT4lCiAgZ2F0aGVyKGNhcGFjaXR5LCBtZWFuX3JhdGluZywgLWNoYXJhY3RlcikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gY2FwYWNpdHksIHkgPSBjaGFyYWN0ZXIsIGZpbGwgPSBtZWFuX3JhdGluZykpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAiYmxhY2siLCBoaWdoID0gIndoaXRlIiwgIyBsaW1pdHMgPSBjKDAsIDEpLAogICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAxNSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgbGFicyh0aXRsZSA9ICJSYXcgZGF0YTogNC0gdG8gNi15ZWFyLW9sZCBjaGlsZHJlbiIsCiAgICAgICBzdWJ0aXRsZSA9ICI5IGNoYXJhY3RlcnMsIDIwIGNhcGFjaXRpZXMiLAogICAgICAgeCA9ICJDYXBhY2l0eSIsCiAgICAgICB5ID0gIkNoYXJhY3RlciIsCiAgICAgICBmaWxsID0gIk1lYW4gcmF0aW5nIikKYGBgCgoKCiMjIFNWRCB7LnRhYnNldH0KCiMjIyBBZHVsdHMKCmBgYHtyfQpzdmQxX2FkIDwtIHN2ZChkX2FkICU+JSBjb2x1bW5fdG9fcm93bmFtZXMoImNoYXJhY3RlciIpLCAKICAgICAgICAgICAgICAgbnJvdyhkX2FkKSwgbnJvdyhkX2FkKSkKYGBgCgojIyMjIFJlY29uc3RydWN0ZWQgZGF0YQoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjY3fQpwbG90X3JlY29uc3RydWN0X2Z1bihzdmQxX2FkLCB0cmFuc3Bvc2UgPSBGQUxTRSwgImFkdWx0cyIpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiUmVjb25zdHJ1Y3RlZCBkYXRhc2V0OiBTdW0gb2Ygb3V0ZXIgcHJvZHVjdHMgKFUsIFYpIG11bHRpcGxpZWQgYnkgUyIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEZlYXR1cmUgdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuKHN2ZDFfYWQsICJhZHVsdHMiLCB0cmFuc3Bvc2UgPSBGQUxTRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBGZWF0dXJlIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiVSB4IFM6IEZlYXR1cmUgdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFNpbmd1bGFyIHZhbHVlcwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1NfZnVuKHN2ZDFfYWQpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiUzogU2luZ3VsYXIgdmFsdWVzIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEl0ZW0gdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpwbG90X1ZfZnVuKHN2ZDFfYWQsICJhZHVsdHMiLCB0cmFuc3Bvc2UgPSBGQUxTRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBJdGVtIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiViB4IFM6IEl0ZW0gdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFBsb3R0aW5nIGluIGRpbWVuc2lvbnMKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9WX2Z1bl9pdGVtKHN2ZDFfYWQsICJhZHVsdHMiLCBlZmFfY29sb3JzID0gVFJVRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkMV9hZCwgImFkdWx0cyIsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDFfYWQsICJhZHVsdHMiLCBlZmFfY29sb3JzID0gVFJVRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuX3Byb3Aoc3ZkMV9hZCwgImFkdWx0cyIsICAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVV9mdW5fcHJvcChzdmQxX2FkLCAiYWR1bHRzIiwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVV9mdW5fcHJvcChzdmQxX2FkLCAiYWR1bHRzIiwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKCiMjIyBDaGlsZHJlbiwgNy05eQoKYGBge3J9CnN2ZDFfNzkgPC0gc3ZkKGRfNzkgJT4lIGNvbHVtbl90b19yb3duYW1lcygiY2hhcmFjdGVyIiksIAogICAgICAgICAgICAgICBucm93KGRfNzkpLCBucm93KGRfNzkpKQpgYGAKCiMjIyMgUmVjb25zdHJ1Y3RlZCBkYXRhCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNjd9CnBsb3RfcmVjb25zdHJ1Y3RfZnVuKHN2ZDFfNzksIHRyYW5zcG9zZSA9IEZBTFNFLCAiY2hpbGRyZW4iKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiUmVjb25zdHJ1Y3RlZCBkYXRhc2V0OiBTdW0gb2Ygb3V0ZXIgcHJvZHVjdHMgKFUsIFYpIG11bHRpcGxpZWQgYnkgUyIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEZlYXR1cmUgdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuKHN2ZDFfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogRmVhdHVyZSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlUgeCBTOiBGZWF0dXJlIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBTaW5ndWxhciB2YWx1ZXMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9TX2Z1bihzdmQxXzc5KSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiUzogU2luZ3VsYXIgdmFsdWVzIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEl0ZW0gdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpwbG90X1ZfZnVuKHN2ZDFfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVjogSXRlbSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlYgeCBTOiBJdGVtIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBQbG90dGluZyBpbiBkaW1lbnNpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW5faXRlbShzdmQxXzc5LCAiY2hpbGRyZW4iLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDFfNzksICJjaGlsZHJlbiIsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkMV83OSwgImNoaWxkcmVuIiwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW5fcHJvcChzdmQxXzc5LCAiY2hpbGRyZW4iLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDFfNzksICJjaGlsZHJlbiIsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVV9mdW5fcHJvcChzdmQxXzc5LCAiY2hpbGRyZW4iLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCgojIyMgQ2hpbGRyZW4sIDQtNnkKCmBgYHtyfQpzdmQxXzQ2IDwtIHN2ZChkXzQ2ICU+JSBjb2x1bW5fdG9fcm93bmFtZXMoImNoYXJhY3RlciIpLCAKICAgICAgICAgICAgICAgbnJvdyhkXzQ2KSwgbnJvdyhkXzQ2KSkKYGBgCgojIyMjIFJlY29uc3RydWN0ZWQgZGF0YQoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjY3fQpwbG90X3JlY29uc3RydWN0X2Z1bihzdmQxXzQ2LCB0cmFuc3Bvc2UgPSBGQUxTRSwgImNoaWxkcmVuIikgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlJlY29uc3RydWN0ZWQgZGF0YXNldDogU3VtIG9mIG91dGVyIHByb2R1Y3RzIChVLCBWKSBtdWx0aXBsaWVkIGJ5IFMiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBGZWF0dXJlIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9VX2Z1bihzdmQxXzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBGQUxTRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IEZlYXR1cmUgdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJVIHggUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgU2luZ3VsYXIgdmFsdWVzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfU19mdW4oc3ZkMV80NikgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlM6IFNpbmd1bGFyIHZhbHVlcyAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBJdGVtIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KcGxvdF9WX2Z1bihzdmQxXzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBGQUxTRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IEl0ZW0gdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJWIHggUzogSXRlbSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgUGxvdHRpbmcgaW4gZGltZW5zaW9ucwoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1ZfZnVuX2l0ZW0oc3ZkMV80NiwgImNoaWxkcmVuIiwgZWZhX2NvbG9ycyA9IFRSVUUsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkMV80NiwgImNoaWxkcmVuIiwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVl9mdW5faXRlbShzdmQxXzQ2LCAiY2hpbGRyZW4iLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9VX2Z1bl9wcm9wKHN2ZDFfNDYsICJjaGlsZHJlbiIsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkMV80NiwgImNoaWxkcmVuIiwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVV9mdW5fcHJvcChzdmQxXzQ2LCAiY2hpbGRyZW4iLCAgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgoKIyMjIENoaWxkcmVuLCA0LTl5CgpgYGB7cn0Kc3ZkMV80OSA8LSBzdmQoZF83OSAlPiUKICAgICAgICAgICAgICAgICBtdXRhdGUoY2hhcmFjdGVyID0gcGFzdGUoY2hhcmFjdGVyLCAiNzkiLCBzZXAgPSAiXyIpKSAlPiUKICAgICAgICAgICAgICAgICBiaW5kX3Jvd3MoZF80NiAlPiUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGUoY2hhcmFjdGVyID0gcGFzdGUoY2hhcmFjdGVyLCAiNDYiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwID0gIl8iKSkpICU+JSAKICAgICAgICAgICAgICAgICBjb2x1bW5fdG9fcm93bmFtZXMoImNoYXJhY3RlciIpLCAKICAgICAgICAgICAgICAgbnJvdyhkXzc5KSArIG5yb3coZF80NiksIG5yb3coZF83OSkgKyBucm93KGRfNDYpKQpgYGAKCiMjIyMgUmVjb25zdHJ1Y3RlZCBkYXRhCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNjd9CnBsb3RfcmVjb25zdHJ1Y3RfZnVuKHN2ZDFfNDksIHRyYW5zcG9zZSA9IEZBTFNFLCAiY2hpbGRyZW5fY29tYiIpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJSZWNvbnN0cnVjdGVkIGRhdGFzZXQ6IFN1bSBvZiBvdXRlciBwcm9kdWN0cyAoVSwgVikgbXVsdGlwbGllZCBieSBTIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgRmVhdHVyZSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW4oc3ZkMV80OSwgImNoaWxkcmVuX2NvbWIiLCB0cmFuc3Bvc2UgPSBGQUxTRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IEZlYXR1cmUgdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJVIHggUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgU2luZ3VsYXIgdmFsdWVzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfU19mdW4oc3ZkMV80OSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlM6IFNpbmd1bGFyIHZhbHVlcyAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBJdGVtIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KcGxvdF9WX2Z1bihzdmQxXzQ5LCAiY2hpbGRyZW5fY29tYiIsIHRyYW5zcG9zZSA9IEZBTFNFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVjogSXRlbSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlYgeCBTOiBJdGVtIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBQbG90dGluZyBpbiBkaW1lbnNpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW5faXRlbShzdmQxXzQ5LCAiY2hpbGRyZW5fY29tYiIsIGVmYV9jb2xvcnMgPSBUUlVFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDFfNDksICJjaGlsZHJlbl9jb21iIiwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVl9mdW5faXRlbShzdmQxXzQ5LCAiY2hpbGRyZW5fY29tYiIsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuX3Byb3Aoc3ZkMV80OSwgImNoaWxkcmVuX2NvbWIiLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKGd1aWRlID0gIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKHJlcCgiYmxhY2siLCA5KSwgcmVwKCJkb2RnZXJibHVlIiwgOSkpKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDFfNDksICJjaGlsZHJlbl9jb21iIiwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikgKwogIHNjYWxlX2NvbG9yX21hbnVhbChndWlkZSA9ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYyhyZXAoImJsYWNrIiwgOSksIHJlcCgiZG9kZ2VyYmx1ZSIsIDkpKSkKCnBsb3RfVV9mdW5fcHJvcChzdmQxXzQ5LCAiY2hpbGRyZW5fY29tYiIsICAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKGd1aWRlID0gIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKHJlcCgiYmxhY2siLCA5KSwgcmVwKCJkb2RnZXJibHVlIiwgOSkpKQpgYGAKCgojIEFwcHJvYWNoICMyCgpJbiBBcHByb2FjaCAjMiB3ZSBwcm9jZWVkIHdpdGhvdXQgbWVhbi1jZW50ZXJpbmcsIHdpdGggY2FwYWNpdGllcyBhcyByb3dzIGFuZCBjaGFyYWN0ZXJzIGFzIGNvbHVtbnMuCgojIyBSYXcgZGF0YSBtYXRyaXggdmlzdWFsaXphdGlvbnMgey50YWJzZXR9CgojIyMgQWR1bHRzCgpJbiB0aGlzIHN0dWR5LCA0MzEgVVMgYWR1bHRzIHJhdGVkIDIxIGNoYXJhY3RlcnMgKGJldHdlZW4tc3ViamVjdHMpIG9uIDQwIGNhcGFjaXRpZXMgKHdpdGhpbi1zdWJqZWN0cykuIChTZWUgV2Vpc21hbiwgRHdlY2ssICYgTWFya21hbiwgMjAxNywgX1BOQVNfLCBTdHVkeSA0LikKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS43OX0KZF9hZCAlPiUKICBnYXRoZXIoY2FwYWNpdHksIG1lYW5fcmF0aW5nLCAtY2hhcmFjdGVyKSAlPiUKICBnZ3Bsb3QoYWVzKHkgPSBjYXBhY2l0eSwgeCA9IGNoYXJhY3RlciwgZmlsbCA9IG1lYW5fcmF0aW5nKSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJibGFjayIsIGhpZ2ggPSAid2hpdGUiLCAjIGxpbWl0cyA9IGMoLTMsIDMpLAogICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAxNSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgbGFicyh0aXRsZSA9ICJSYXcgZGF0YTogQWR1bHRzIiwKICAgICAgIHN1YnRpdGxlID0gIjIxIGNoYXJhY3RlcnMsIDQwIGNhcGFjaXRpZXMiLAogICAgICAgeSA9ICJDYXBhY2l0eSIsCiAgICAgICB4ID0gIkNoYXJhY3RlciIsCiAgICAgICBmaWxsID0gIk1lYW4gcmF0aW5nIikKYGBgCgojIyMgNy05eW8gY2hpbGRyZW4KCkluIHRoaXMgc3R1ZHksIDEyMyA3LSB0byA5LXllYXItb2xkIFVTIGNoaWxkcmVuIHJhdGVkIDkgY2hhcmFjdGVycyAoYmV0d2Vlbi1zdWJqZWN0cykgb24gMjAgY2FwYWNpdGllcyAod2l0aGluIHN1YmplY3RzKS4gKFNlZSBXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCAyMDE4LCBfUHJvYy4gQ29nU2NpXy4pCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CmRfNzkgJT4lCiAgZ2F0aGVyKGNhcGFjaXR5LCBtZWFuX3JhdGluZywgLWNoYXJhY3RlcikgJT4lCiAgZ2dwbG90KGFlcyh5ID0gY2FwYWNpdHksIHggPSBjaGFyYWN0ZXIsIGZpbGwgPSBtZWFuX3JhdGluZykpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAiYmxhY2siLCBoaWdoID0gIndoaXRlIiwgIyBsaW1pdHMgPSBjKDAsIDEpLAogICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAxNSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgbGFicyh0aXRsZSA9ICJSYXcgZGF0YTogNy0gdG8gOS15ZWFyLW9sZCBjaGlsZHJlbiIsCiAgICAgICBzdWJ0aXRsZSA9ICI5IGNoYXJhY3RlcnMsIDIwIGNhcGFjaXRpZXMiLAogICAgICAgeSA9ICJDYXBhY2l0eSIsCiAgICAgICB4ID0gIkNoYXJhY3RlciIsCiAgICAgICBmaWxsID0gIk1lYW4gcmF0aW5nIikKYGBgCgojIyMgNC02eW8gY2hpbGRyZW4KCkluIHRoaXMgc3R1ZHksIDEyNCA0LSB0byA2LXllYXItb2xkIFVTIGNoaWxkcmVuIHJhdGVkIDkgY2hhcmFjdGVycyAoYmV0d2Vlbi1zdWJqZWN0cykgb24gMjAgY2FwYWNpdGllcyAod2l0aGluIHN1YmplY3RzKS4gKFNlZSBXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCAyMDE4LCBfUHJvYy4gQ29nU2NpXy4pCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CmRfNDYgJT4lCiAgZ2F0aGVyKGNhcGFjaXR5LCBtZWFuX3JhdGluZywgLWNoYXJhY3RlcikgJT4lCiAgZ2dwbG90KGFlcyh5ID0gY2FwYWNpdHksIHggPSBjaGFyYWN0ZXIsIGZpbGwgPSBtZWFuX3JhdGluZykpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAiYmxhY2siLCBoaWdoID0gIndoaXRlIiwgIyBsaW1pdHMgPSBjKDAsIDEpLAogICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAxNSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgbGFicyh0aXRsZSA9ICJSYXcgZGF0YTogNC0gdG8gNi15ZWFyLW9sZCBjaGlsZHJlbiIsCiAgICAgICBzdWJ0aXRsZSA9ICI5IGNoYXJhY3RlcnMsIDIwIGNhcGFjaXRpZXMiLAogICAgICAgeSA9ICJDYXBhY2l0eSIsCiAgICAgICB4ID0gIkNoYXJhY3RlciIsCiAgICAgICBmaWxsID0gIk1lYW4gcmF0aW5nIikKYGBgCgoKIyMgU1ZEIHsudGFic2V0fQoKIyMjIEFkdWx0cwoKYGBge3J9CnN2ZDJfYWQgPC0gc3ZkKGRfYWQgJT4lIGNvbHVtbl90b19yb3duYW1lcygiY2hhcmFjdGVyIikgJT4lIHQoKSwgCiAgICAgICAgICAgICAgIG5yb3coZF9hZCksIG5yb3coZF9hZCkpCmBgYAoKIyMjIyBSZWNvbnN0cnVjdGVkIGRhdGEKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KcGxvdF9yZWNvbnN0cnVjdF9mdW4oc3ZkMl9hZCwgImFkdWx0cyIsIFRSVUUpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiUmVjb25zdHJ1Y3RlZCBkYXRhc2V0OiBTdW0gb2Ygb3V0ZXIgcHJvZHVjdHMgKFUsIFYpIG11bHRpcGxpZWQgYnkgUyIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEZlYXR1cmUgdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpwbG90X1VfZnVuKHN2ZDJfYWQsICJhZHVsdHMiLCB0cmFuc3Bvc2UgPSBUUlVFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IEZlYXR1cmUgdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJVIHggUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgU2luZ3VsYXIgdmFsdWVzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfU19mdW4oc3ZkMl9hZCkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJTOiBTaW5ndWxhciB2YWx1ZXMgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgSXRlbSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW4oc3ZkMl9hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IFRSVUUsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVjogSXRlbSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlYgeCBTOiBJdGVtIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBQbG90dGluZyBpbiBkaW1lbnNpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW5faXRlbShzdmQyX2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gVFJVRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkMl9hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IFRSVUUsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDJfYWQsICJhZHVsdHMiLCB0cmFuc3Bvc2UgPSBUUlVFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW5fcHJvcChzdmQyX2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDJfYWQsICJhZHVsdHMiLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkMl9hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IFRSVUUsIGVmYV9jb2xvcnMgPSBUUlVFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2FwYWNpdGllcyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgoKIyMjIENoaWxkcmVuLCA3LTl5CgpgYGB7cn0Kc3ZkMl83OSA8LSBzdmQoZF83OSAlPiUgY29sdW1uX3RvX3Jvd25hbWVzKCJjaGFyYWN0ZXIiKSAlPiUgdCgpLCAKICAgICAgICAgICAgICAgbnJvdyhkXzc5KSwgbnJvdyhkXzc5KSkKYGBgCgojIyMjIFJlY29uc3RydWN0ZWQgZGF0YQoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpwbG90X3JlY29uc3RydWN0X2Z1bihzdmQyXzc5LCAiY2hpbGRyZW4iLCBUUlVFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiUmVjb25zdHJ1Y3RlZCBkYXRhc2V0OiBTdW0gb2Ygb3V0ZXIgcHJvZHVjdHMgKFUsIFYpIG11bHRpcGxpZWQgYnkgUyIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEZlYXR1cmUgdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpwbG90X1VfZnVuKHN2ZDJfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBGZWF0dXJlIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiVSB4IFM6IEZlYXR1cmUgdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFNpbmd1bGFyIHZhbHVlcwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1NfZnVuKHN2ZDJfNzkpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJTOiBTaW5ndWxhciB2YWx1ZXMgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgSXRlbSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW4oc3ZkMl83OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IEl0ZW0gdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJWIHggUzogSXRlbSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgUGxvdHRpbmcgaW4gZGltZW5zaW9ucwoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1ZfZnVuX2l0ZW0oc3ZkMl83OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDJfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVl9mdW5faXRlbShzdmQyXzc5LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuX3Byb3Aoc3ZkMl83OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVV9mdW5fcHJvcChzdmQyXzc5LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDJfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENhcGFjaXRpZXMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKCiMjIyBDaGlsZHJlbiwgNC02eQoKYGBge3J9CnN2ZDJfNDYgPC0gc3ZkKGRfNDYgJT4lIGNvbHVtbl90b19yb3duYW1lcygiY2hhcmFjdGVyIikgJT4lIHQoKSwgCiAgICAgICAgICAgICAgIG5yb3coZF80NiksIG5yb3coZF80NikpCmBgYAoKIyMjIyBSZWNvbnN0cnVjdGVkIGRhdGEKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KcGxvdF9yZWNvbnN0cnVjdF9mdW4oc3ZkMl80NiwgImNoaWxkcmVuIiwgVFJVRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlJlY29uc3RydWN0ZWQgZGF0YXNldDogU3VtIG9mIG91dGVyIHByb2R1Y3RzIChVLCBWKSBtdWx0aXBsaWVkIGJ5IFMiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBGZWF0dXJlIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KcGxvdF9VX2Z1bihzdmQyXzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVTogRmVhdHVyZSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlUgeCBTOiBGZWF0dXJlIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBTaW5ndWxhciB2YWx1ZXMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9TX2Z1bihzdmQyXzQ2KSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiUzogU2luZ3VsYXIgdmFsdWVzIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEl0ZW0gdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1ZfZnVuKHN2ZDJfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBJdGVtIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiViB4IFM6IEl0ZW0gdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFBsb3R0aW5nIGluIGRpbWVuc2lvbnMKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9WX2Z1bl9pdGVtKHN2ZDJfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkMl80NiwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVl9mdW5faXRlbShzdmQyXzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9VX2Z1bl9wcm9wKHN2ZDJfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkMl80NiwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVV9mdW5fcHJvcChzdmQyXzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDYXBhY2l0aWVzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCgojIyMgQ2hpbGRyZW4sIDQtOXkKCmBgYHtyfQpzdmQyXzQ5IDwtIHN2ZChkXzc5ICU+JQogICAgICAgICAgICAgICAgIG11dGF0ZShjaGFyYWN0ZXIgPSBwYXN0ZShjaGFyYWN0ZXIsICI3OSIsIHNlcCA9ICJfIikpICU+JQogICAgICAgICAgICAgICAgIGJpbmRfcm93cyhkXzQ2ICU+JQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0ZShjaGFyYWN0ZXIgPSBwYXN0ZShjaGFyYWN0ZXIsICI0NiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXAgPSAiXyIpKSkgJT4lIAogICAgICAgICAgICAgICAgIGNvbHVtbl90b19yb3duYW1lcygiY2hhcmFjdGVyIikgJT4lCiAgICAgICAgICAgICAgICAgdCgpLCAKICAgICAgICAgICAgICAgbnJvdyhkXzc5KSArIG5yb3coZF80NiksIG5yb3coZF83OSkgKyBucm93KGRfNDYpKQpgYGAKCiMjIyMgUmVjb25zdHJ1Y3RlZCBkYXRhCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNjd9CnBsb3RfcmVjb25zdHJ1Y3RfZnVuKHN2ZDJfNDksIHRyYW5zcG9zZSA9IFRSVUUsICJjaGlsZHJlbl9jb21iIikgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlJlY29uc3RydWN0ZWQgZGF0YXNldDogU3VtIG9mIG91dGVyIHByb2R1Y3RzIChVLCBWKSBtdWx0aXBsaWVkIGJ5IFMiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBGZWF0dXJlIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9VX2Z1bihzdmQyXzQ5LCAiY2hpbGRyZW5fY29tYiIsIHRyYW5zcG9zZSA9IFRSVUUsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBGZWF0dXJlIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiVSB4IFM6IEZlYXR1cmUgdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFNpbmd1bGFyIHZhbHVlcwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1NfZnVuKHN2ZDJfNDkpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJTOiBTaW5ndWxhciB2YWx1ZXMgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgSXRlbSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CnBsb3RfVl9mdW4oc3ZkMl80OSwgImNoaWxkcmVuX2NvbWIiLCB0cmFuc3Bvc2UgPSBUUlVFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVjogSXRlbSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlYgeCBTOiBJdGVtIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBQbG90dGluZyBpbiBkaW1lbnNpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW5faXRlbShzdmQyXzQ5LCAiY2hpbGRyZW5fY29tYiIsIHRyYW5zcG9zZSA9IFRSVUUsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpICsKICBzY2FsZV9jb2xvcl9tYW51YWwoZ3VpZGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMocmVwKCJibGFjayIsIDkpLCByZXAoImRvZGdlcmJsdWUiLCA5KSkpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkMl80OSwgImNoaWxkcmVuX2NvbWIiLCB0cmFuc3Bvc2UgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpICsKICBzY2FsZV9jb2xvcl9tYW51YWwoZ3VpZGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMocmVwKCJibGFjayIsIDkpLCByZXAoImRvZGdlcmJsdWUiLCA5KSkpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkMl80OSwgImNoaWxkcmVuX2NvbWIiLCB0cmFuc3Bvc2UgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpICsKICBzY2FsZV9jb2xvcl9tYW51YWwoZ3VpZGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMocmVwKCJibGFjayIsIDkpLCByZXAoImRvZGdlcmJsdWUiLCA5KSkpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuX3Byb3Aoc3ZkMl80OSwgImNoaWxkcmVuX2NvbWIiLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDJfNDksICJjaGlsZHJlbl9jb21iIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVV9mdW5fcHJvcChzdmQyXzQ5LCAiY2hpbGRyZW5fY29tYiIsIHRyYW5zcG9zZSA9IFRSVUUsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKCiMgQXBwcm9hY2ggIzMKCkluIEFwcHJvYWNoICMzIHdlIG1lYW4tY2VudGVyIGJ5IGNhcGFjaXR5LCB3aXRoIGNoYXJhY3RlcnMgYXMgcm93cyBhbmQgY2FwYWNpdGllcyBhcyBjb2x1bW5zLgoKIyMgUmF3IGRhdGEgbWF0cml4IHZpc3VhbGl6YXRpb25zIHsudGFic2V0fQoKIyMjIEFkdWx0cwoKSW4gdGhpcyBzdHVkeSwgNDMxIFVTIGFkdWx0cyByYXRlZCAyMSBjaGFyYWN0ZXJzIChiZXR3ZWVuLXN1YmplY3RzKSBvbiA0MCBjYXBhY2l0aWVzICh3aXRoaW4tc3ViamVjdHMpLiAoU2VlIFdlaXNtYW4sIER3ZWNrLCAmIE1hcmttYW4sIDIwMTcsIF9QTkFTXywgU3R1ZHkgNC4pCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNjd9CmRfYWQgJT4lCiAgbWVhbl9jZW50X2Z1bihieSA9ICJjYXBhY2l0eSIsIGFnZV9ncm91cCA9ICJhZHVsdHMiKSAlPiUKICBnYXRoZXIoY2FwYWNpdHksIG1lYW5fY2VudCwgLWNoYXJhY3RlcikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gY2FwYWNpdHksIHkgPSBjaGFyYWN0ZXIsIGZpbGwgPSBtZWFuX2NlbnQpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIHNjYWxlX2ZpbGxfZ3JhZGllbnQobG93ID0gImJsYWNrIiwgaGlnaCA9ICJ3aGl0ZSIsICMgbGltaXRzID0gYygtNiwgNiksCiAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDE1KSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBsYWJzKHRpdGxlID0gIlJhdyBkYXRhOiBBZHVsdHMiLAogICAgICAgc3VidGl0bGUgPSAiMjEgY2hhcmFjdGVycywgNDAgY2FwYWNpdGllcyIsCiAgICAgICB4ID0gIkNhcGFjaXR5IiwKICAgICAgIHkgPSAiQ2hhcmFjdGVyIiwKICAgICAgIGZpbGwgPSAiTWVhbiByYXRpbmciKQpgYGAKCiMjIyA3LTl5byBjaGlsZHJlbgoKSW4gdGhpcyBzdHVkeSwgMTIzIDctIHRvIDkteWVhci1vbGQgVVMgY2hpbGRyZW4gcmF0ZWQgOSBjaGFyYWN0ZXJzIChiZXR3ZWVuLXN1YmplY3RzKSBvbiAyMCBjYXBhY2l0aWVzICh3aXRoaW4gc3ViamVjdHMpLiAoU2VlIFdlaXNtYW4sIER3ZWNrLCAmIE1hcmttYW4sIDIwMTgsIF9Qcm9jLiBDb2dTY2lfLikKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC42N30KZF83OSAlPiUKICBtZWFuX2NlbnRfZnVuKGJ5ID0gImNhcGFjaXR5IiwgYWdlX2dyb3VwID0gImNoaWxkcmVuIikgJT4lCiAgZ2F0aGVyKGNhcGFjaXR5LCBtZWFuX2NlbnQsIC1jaGFyYWN0ZXIpICU+JQogIGdncGxvdChhZXMoeCA9IGNhcGFjaXR5LCB5ID0gY2hhcmFjdGVyLCBmaWxsID0gbWVhbl9jZW50KSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJibGFjayIsIGhpZ2ggPSAid2hpdGUiLCAjIGxpbWl0cyA9IGMoLTIsIDIpLAogICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAxNSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgbGFicyh0aXRsZSA9ICJSYXcgZGF0YTogNy0gdG8gOS15ZWFyLW9sZCBjaGlsZHJlbiIsCiAgICAgICBzdWJ0aXRsZSA9ICI5IGNoYXJhY3RlcnMsIDIwIGNhcGFjaXRpZXMiLAogICAgICAgeCA9ICJDYXBhY2l0eSIsCiAgICAgICB5ID0gIkNoYXJhY3RlciIsCiAgICAgICBmaWxsID0gIk1lYW4gcmF0aW5nIikKYGBgCgojIyMgNC02eW8gY2hpbGRyZW4KCkluIHRoaXMgc3R1ZHksIDEyNCA0LSB0byA2LXllYXItb2xkIFVTIGNoaWxkcmVuIHJhdGVkIDkgY2hhcmFjdGVycyAoYmV0d2Vlbi1zdWJqZWN0cykgb24gMjAgY2FwYWNpdGllcyAod2l0aGluIHN1YmplY3RzKS4gKFNlZSBXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCAyMDE4LCBfUHJvYy4gQ29nU2NpXy4pCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNjd9CmRfNDYgJT4lCiAgbWVhbl9jZW50X2Z1bihieSA9ICJjYXBhY2l0eSIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbiIpICU+JQogIGdhdGhlcihjYXBhY2l0eSwgbWVhbl9jZW50LCAtY2hhcmFjdGVyKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBjYXBhY2l0eSwgeSA9IGNoYXJhY3RlciwgZmlsbCA9IG1lYW5fY2VudCkpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAiYmxhY2siLCBoaWdoID0gIndoaXRlIiwgIyBsaW1pdHMgPSBjKC0yLCAyKSwKICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIoYmFyaGVpZ2h0ID0gMTUpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGxhYnModGl0bGUgPSAiUmF3IGRhdGE6IDQtIHRvIDYteWVhci1vbGQgY2hpbGRyZW4iLAogICAgICAgc3VidGl0bGUgPSAiOSBjaGFyYWN0ZXJzLCAyMCBjYXBhY2l0aWVzIiwKICAgICAgIHggPSAiQ2FwYWNpdHkiLAogICAgICAgeSA9ICJDaGFyYWN0ZXIiLAogICAgICAgZmlsbCA9ICJNZWFuIHJhdGluZyIpCmBgYAoKCiMjIFNWRCB7LnRhYnNldH0KCiMjIyBBZHVsdHMKCmBgYHtyfQpzdmQzX2FkIDwtIHN2ZChkX2FkICU+JQogICAgICAgICAgICAgICAgIG1lYW5fY2VudF9mdW4oImNhcGFjaXR5IiwgYWdlX2dyb3VwID0gImFkdWx0cyIpICU+JQogICAgICAgICAgICAgICAgIGNvbHVtbl90b19yb3duYW1lcygiY2hhcmFjdGVyIiksCiAgICAgICAgICAgICAgIG5yb3coZF9hZCksIG5yb3coZF9hZCkpCmBgYAoKIyMjIyBSZWNvbnN0cnVjdGVkIGRhdGEKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC42N30KcGxvdF9yZWNvbnN0cnVjdF9mdW4oc3ZkM19hZCwgdHJhbnNwb3NlID0gRkFMU0UsICJhZHVsdHMiKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlJlY29uc3RydWN0ZWQgZGF0YXNldDogU3VtIG9mIG91dGVyIHByb2R1Y3RzIChVLCBWKSBtdWx0aXBsaWVkIGJ5IFMiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBGZWF0dXJlIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9VX2Z1bihzdmQzX2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gRkFMU0UsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVTogRmVhdHVyZSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlUgeCBTOiBGZWF0dXJlIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBTaW5ndWxhciB2YWx1ZXMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9TX2Z1bihzdmQzX2FkKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlM6IFNpbmd1bGFyIHZhbHVlcyAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBJdGVtIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KcGxvdF9WX2Z1bihzdmQzX2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gRkFMU0UsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVjogSXRlbSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlYgeCBTOiBJdGVtIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBQbG90dGluZyBpbiBkaW1lbnNpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW5faXRlbShzdmQzX2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gRkFMU0UsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDNfYWQsICJhZHVsdHMiLCB0cmFuc3Bvc2UgPSBGQUxTRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkM19hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IEZBTFNFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW5fcHJvcChzdmQzX2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gRkFMU0UsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkM19hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IEZBTFNFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVV9mdW5fcHJvcChzdmQzX2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gRkFMU0UsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCgojIyMgQ2hpbGRyZW4sIDctOXkKCmBgYHtyfQpzdmQzXzc5IDwtIHN2ZChkXzc5ICU+JQogICAgICAgICAgICAgICAgIG1lYW5fY2VudF9mdW4oImNhcGFjaXR5IiwgYWdlX2dyb3VwID0gImNoaWxkcmVuIikgJT4lCiAgICAgICAgICAgICAgICAgY29sdW1uX3RvX3Jvd25hbWVzKCJjaGFyYWN0ZXIiKSwKICAgICAgICAgICAgICAgbnJvdyhkXzc5KSwgbnJvdyhkXzc5KSkKYGBgCgojIyMjIFJlY29uc3RydWN0ZWQgZGF0YQoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjY3fQpwbG90X3JlY29uc3RydWN0X2Z1bihzdmQzXzc5LCB0cmFuc3Bvc2UgPSBGQUxTRSwgImNoaWxkcmVuIikgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlJlY29uc3RydWN0ZWQgZGF0YXNldDogU3VtIG9mIG91dGVyIHByb2R1Y3RzIChVLCBWKSBtdWx0aXBsaWVkIGJ5IFMiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBGZWF0dXJlIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9VX2Z1bihzdmQzXzc5LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBGQUxTRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IEZlYXR1cmUgdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJVIHggUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgU2luZ3VsYXIgdmFsdWVzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfU19mdW4oc3ZkM183OSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlM6IFNpbmd1bGFyIHZhbHVlcyAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBJdGVtIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KcGxvdF9WX2Z1bihzdmQzXzc5LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBGQUxTRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IEl0ZW0gdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJWIHggUzogSXRlbSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgUGxvdHRpbmcgaW4gZGltZW5zaW9ucwoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1ZfZnVuX2l0ZW0oc3ZkM183OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gRkFMU0UsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkM183OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gRkFMU0UsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkM183OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gRkFMU0UsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuX3Byb3Aoc3ZkM183OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gRkFMU0UsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVV9mdW5fcHJvcChzdmQzXzc5LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBGQUxTRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVV9mdW5fcHJvcChzdmQzXzc5LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBGQUxTRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgoKIyMjIENoaWxkcmVuLCA0LTZ5CgpgYGB7cn0Kc3ZkM180NiA8LSBzdmQoZF80NiAlPiUKICAgICAgICAgICAgICAgICBtZWFuX2NlbnRfZnVuKCJjYXBhY2l0eSIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbiIpICU+JQogICAgICAgICAgICAgICAgIGNvbHVtbl90b19yb3duYW1lcygiY2hhcmFjdGVyIiksCiAgICAgICAgICAgICAgIG5yb3coZF80NiksIG5yb3coZF80NikpCmBgYAoKIyMjIyBSZWNvbnN0cnVjdGVkIGRhdGEKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC42N30KcGxvdF9yZWNvbnN0cnVjdF9mdW4oc3ZkM180NiwgdHJhbnNwb3NlID0gRkFMU0UsICJjaGlsZHJlbiIpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJSZWNvbnN0cnVjdGVkIGRhdGFzZXQ6IFN1bSBvZiBvdXRlciBwcm9kdWN0cyAoVSwgVikgbXVsdGlwbGllZCBieSBTIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgRmVhdHVyZSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW4oc3ZkM180NiwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gRkFMU0UsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBGZWF0dXJlIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiVSB4IFM6IEZlYXR1cmUgdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFNpbmd1bGFyIHZhbHVlcwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1NfZnVuKHN2ZDNfNDYpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJTOiBTaW5ndWxhciB2YWx1ZXMgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgSXRlbSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CnBsb3RfVl9mdW4oc3ZkM180NiwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gRkFMU0UsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBJdGVtIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiViB4IFM6IEl0ZW0gdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFBsb3R0aW5nIGluIGRpbWVuc2lvbnMKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9WX2Z1bl9pdGVtKHN2ZDNfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDNfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDNfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9VX2Z1bl9wcm9wKHN2ZDNfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkM180NiwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gRkFMU0UsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkM180NiwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gRkFMU0UsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKCiMjIyBDaGlsZHJlbiwgNC05eQoKYGBge3J9CnN2ZDNfNDkgPC0gc3ZkKGRfNzkgJT4lCiAgICAgICAgICAgICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IHBhc3RlKGNoYXJhY3RlciwgIjc5Iiwgc2VwID0gIl8iKSkgJT4lCiAgICAgICAgICAgICAgICAgYmluZF9yb3dzKGRfNDYgJT4lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IHBhc3RlKGNoYXJhY3RlciwgIjQ2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcCA9ICJfIikpKSAlPiUgCiAgICAgICAgICAgICAgICAgbWVhbl9jZW50X2Z1bigiY2FwYWNpdHkiLCBhZ2VfZ3JvdXAgPSAiY2hpbGRyZW4iKSAlPiUKICAgICAgICAgICAgICAgICBjb2x1bW5fdG9fcm93bmFtZXMoImNoYXJhY3RlciIpLCAKICAgICAgICAgICAgICAgbnJvdyhkXzc5KSArIG5yb3coZF80NiksIG5yb3coZF83OSkgKyBucm93KGRfNDYpKQpgYGAKCiMjIyMgUmVjb25zdHJ1Y3RlZCBkYXRhCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNjd9CnBsb3RfcmVjb25zdHJ1Y3RfZnVuKHN2ZDNfNDksIHRyYW5zcG9zZSA9IEZBTFNFLCAiY2hpbGRyZW5fY29tYiIpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJSZWNvbnN0cnVjdGVkIGRhdGFzZXQ6IFN1bSBvZiBvdXRlciBwcm9kdWN0cyAoVSwgVikgbXVsdGlwbGllZCBieSBTIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgRmVhdHVyZSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW4oc3ZkM180OSwgImNoaWxkcmVuX2NvbWIiLCB0cmFuc3Bvc2UgPSBGQUxTRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IEZlYXR1cmUgdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJVIHggUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgU2luZ3VsYXIgdmFsdWVzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfU19mdW4oc3ZkM180OSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlM6IFNpbmd1bGFyIHZhbHVlcyAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBJdGVtIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KcGxvdF9WX2Z1bihzdmQzXzQ5LCAiY2hpbGRyZW5fY29tYiIsIHRyYW5zcG9zZSA9IEZBTFNFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVjogSXRlbSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlYgeCBTOiBJdGVtIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBQbG90dGluZyBpbiBkaW1lbnNpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW5faXRlbShzdmQzXzQ5LCAiY2hpbGRyZW5fY29tYiIsIGVmYV9jb2xvcnMgPSBUUlVFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDNfNDksICJjaGlsZHJlbl9jb21iIiwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVl9mdW5faXRlbShzdmQzXzQ5LCAiY2hpbGRyZW5fY29tYiIsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuX3Byb3Aoc3ZkM180OSwgImNoaWxkcmVuX2NvbWIiLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKGd1aWRlID0gIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKHJlcCgiYmxhY2siLCA5KSwgcmVwKCJkb2RnZXJibHVlIiwgOSkpKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDNfNDksICJjaGlsZHJlbl9jb21iIiwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikgKwogIHNjYWxlX2NvbG9yX21hbnVhbChndWlkZSA9ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYyhyZXAoImJsYWNrIiwgOSksIHJlcCgiZG9kZ2VyYmx1ZSIsIDkpKSkKCnBsb3RfVV9mdW5fcHJvcChzdmQzXzQ5LCAiY2hpbGRyZW5fY29tYiIsICAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKGd1aWRlID0gIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKHJlcCgiYmxhY2siLCA5KSwgcmVwKCJkb2RnZXJibHVlIiwgOSkpKQpgYGAKCgojIEFwcHJvYWNoICM0CgpJbiBBcHByb2FjaCAjNCB3ZSBtZWFuLWNlbnRlciBieSBjaGFyYWN0ZXIsIHdpdGggY2FwYWNpdGllcyBhcyByb3dzIGFuZCBjaGFyYWN0ZXJzIGFzIGNvbHVtbnMuCgojIyBSYXcgZGF0YSBtYXRyaXggdmlzdWFsaXphdGlvbnMgey50YWJzZXR9CgojIyMgQWR1bHRzCgpJbiB0aGlzIHN0dWR5LCA0MzEgVVMgYWR1bHRzIHJhdGVkIDIxIGNoYXJhY3RlcnMgKGJldHdlZW4tc3ViamVjdHMpIG9uIDQwIGNhcGFjaXRpZXMgKHdpdGhpbi1zdWJqZWN0cykuIChTZWUgV2Vpc21hbiwgRHdlY2ssICYgTWFya21hbiwgMjAxNywgX1BOQVNfLCBTdHVkeSA0LikKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KZF9hZCAlPiUKICBtZWFuX2NlbnRfZnVuKCJjaGFyYWN0ZXIiLCBhZ2VfZ3JvdXAgPSAiYWR1bHRzIikgJT4lCiAgZ2F0aGVyKGNoYXJhY3RlciwgbWVhbl9jZW50LCAtY2FwYWNpdHkpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyLCBsZXZlbHMgPSBjaGFyYWN0ZXJfbmFtZXNfYWQpKSAlPiUKICBnZ3Bsb3QoYWVzKHkgPSBjYXBhY2l0eSwgeCA9IGNoYXJhY3RlciwgZmlsbCA9IG1lYW5fY2VudCkpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAiYmxhY2siLCBoaWdoID0gIndoaXRlIiwgIyBsaW1pdHMgPSBjKC0zLCAzKSwKICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIoYmFyaGVpZ2h0ID0gMTUpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGxhYnModGl0bGUgPSAiUmF3IGRhdGE6IEFkdWx0cyIsCiAgICAgICBzdWJ0aXRsZSA9ICIyMSBjaGFyYWN0ZXJzLCA0MCBjYXBhY2l0aWVzIiwKICAgICAgIHkgPSAiQ2FwYWNpdHkiLAogICAgICAgeCA9ICJDaGFyYWN0ZXIiLAogICAgICAgZmlsbCA9ICJNZWFuIHJhdGluZyIpCmBgYAoKIyMjIDctOXlvIGNoaWxkcmVuCgpJbiB0aGlzIHN0dWR5LCAxMjMgNy0gdG8gOS15ZWFyLW9sZCBVUyBjaGlsZHJlbiByYXRlZCA5IGNoYXJhY3RlcnMgKGJldHdlZW4tc3ViamVjdHMpIG9uIDIwIGNhcGFjaXRpZXMgKHdpdGhpbiBzdWJqZWN0cykuIChTZWUgV2Vpc21hbiwgRHdlY2ssICYgTWFya21hbiwgMjAxOCwgX1Byb2MuIENvZ1NjaV8uKQoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpkXzc5ICU+JQogIG1lYW5fY2VudF9mdW4oImNoYXJhY3RlciIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbiIpICU+JQogIGdhdGhlcihjaGFyYWN0ZXIsIG1lYW5fY2VudCwgLWNhcGFjaXR5KSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlciwgbGV2ZWxzID0gY2hhcmFjdGVyX25hbWVzX2NoKSkgJT4lCiAgZ2dwbG90KGFlcyh5ID0gY2FwYWNpdHksIHggPSBjaGFyYWN0ZXIsIGZpbGwgPSBtZWFuX2NlbnQpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIHNjYWxlX2ZpbGxfZ3JhZGllbnQobG93ID0gImJsYWNrIiwgaGlnaCA9ICJ3aGl0ZSIsICMgbGltaXRzID0gYygtMiwgMiksCiAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDE1KSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBsYWJzKHRpdGxlID0gIlJhdyBkYXRhOiA3LSB0byA5LXllYXItb2xkIGNoaWxkcmVuIiwKICAgICAgIHN1YnRpdGxlID0gIjkgY2hhcmFjdGVycywgMjAgY2FwYWNpdGllcyIsCiAgICAgICB5ID0gIkNhcGFjaXR5IiwKICAgICAgIHggPSAiQ2hhcmFjdGVyIiwKICAgICAgIGZpbGwgPSAiTWVhbiByYXRpbmciKQpgYGAKCiMjIyA0LTZ5byBjaGlsZHJlbgoKSW4gdGhpcyBzdHVkeSwgMTI0IDQtIHRvIDYteWVhci1vbGQgVVMgY2hpbGRyZW4gcmF0ZWQgOSBjaGFyYWN0ZXJzIChiZXR3ZWVuLXN1YmplY3RzKSBvbiAyMCBjYXBhY2l0aWVzICh3aXRoaW4gc3ViamVjdHMpLiAoU2VlIFdlaXNtYW4sIER3ZWNrLCAmIE1hcmttYW4sIDIwMTgsIF9Qcm9jLiBDb2dTY2lfLikKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KZF80NiAlPiUKICBtZWFuX2NlbnRfZnVuKCJjaGFyYWN0ZXIiLCBhZ2VfZ3JvdXAgPSAiY2hpbGRyZW4iKSAlPiUKICBnYXRoZXIoY2hhcmFjdGVyLCBtZWFuX2NlbnQsIC1jYXBhY2l0eSkgJT4lCiAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIsIGxldmVscyA9IGNoYXJhY3Rlcl9uYW1lc19jaCkpICU+JQogIGdncGxvdChhZXMoeSA9IGNhcGFjaXR5LCB4ID0gY2hhcmFjdGVyLCBmaWxsID0gbWVhbl9jZW50KSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJibGFjayIsIGhpZ2ggPSAid2hpdGUiLCAjIGxpbWl0cyA9IGMoLTIsIDIpLAogICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAxNSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgbGFicyh0aXRsZSA9ICJSYXcgZGF0YTogNC0gdG8gNi15ZWFyLW9sZCBjaGlsZHJlbiIsCiAgICAgICBzdWJ0aXRsZSA9ICI5IGNoYXJhY3RlcnMsIDIwIGNhcGFjaXRpZXMiLAogICAgICAgeSA9ICJDYXBhY2l0eSIsCiAgICAgICB4ID0gIkNoYXJhY3RlciIsCiAgICAgICBmaWxsID0gIk1lYW4gcmF0aW5nIikKYGBgCgoKIyMgU1ZEIHsudGFic2V0fQoKIyMjIEFkdWx0cwoKYGBge3J9CnN2ZDRfYWQgPC0gc3ZkKGRfYWQgJT4lIAogICAgICAgICAgICAgICAgIG1lYW5fY2VudF9mdW4oImNoYXJhY3RlciIsIGFnZV9ncm91cCA9ICJhZHVsdHMiKSAlPiUKICAgICAgICAgICAgICAgICBjb2x1bW5fdG9fcm93bmFtZXMoImNhcGFjaXR5IiksCiAgICAgICAgICAgICAgIG5yb3coZF9hZCksIG5yb3coZF9hZCkpCmBgYAoKIyMjIyBSZWNvbnN0cnVjdGVkIGRhdGEKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KcGxvdF9yZWNvbnN0cnVjdF9mdW4oc3ZkNF9hZCwgdHJhbnNwb3NlID0gVFJVRSwgImFkdWx0cyIpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiUmVjb25zdHJ1Y3RlZCBkYXRhc2V0OiBTdW0gb2Ygb3V0ZXIgcHJvZHVjdHMgKFUsIFYpIG11bHRpcGxpZWQgYnkgUyIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEZlYXR1cmUgdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpwbG90X1VfZnVuKHN2ZDRfYWQsICJhZHVsdHMiLCB0cmFuc3Bvc2UgPSBUUlVFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IEZlYXR1cmUgdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJVIHggUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgU2luZ3VsYXIgdmFsdWVzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfU19mdW4oc3ZkNF9hZCkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJTOiBTaW5ndWxhciB2YWx1ZXMgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgSXRlbSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW4oc3ZkNF9hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IFRSVUUsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVjogSXRlbSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlYgeCBTOiBJdGVtIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBQbG90dGluZyBpbiBkaW1lbnNpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW5faXRlbShzdmQ0X2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVl9mdW5faXRlbShzdmQ0X2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVl9mdW5faXRlbShzdmQ0X2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW5fcHJvcChzdmQ0X2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkNF9hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IFRSVUUsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDRfYWQsICJhZHVsdHMiLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2FwYWNpdGllcyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgoKIyMjIENoaWxkcmVuLCA3LTl5CgpgYGB7cn0Kc3ZkNF83OSA8LSBzdmQoZF83OSAlPiUgCiAgICAgICAgICAgICAgICAgbWVhbl9jZW50X2Z1bigiY2hhcmFjdGVyIiwgYWdlX2dyb3VwID0gImNoaWxkcmVuIikgJT4lCiAgICAgICAgICAgICAgICAgY29sdW1uX3RvX3Jvd25hbWVzKCJjYXBhY2l0eSIpLAogICAgICAgICAgICAgICBucm93KGRfNzkpLCBucm93KGRfNzkpKQpgYGAKCiMjIyMgUmVjb25zdHJ1Y3RlZCBkYXRhCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CnBsb3RfcmVjb25zdHJ1Y3RfZnVuKHN2ZDRfNzksIHRyYW5zcG9zZSA9IFRSVUUsICJjaGlsZHJlbiIpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJSZWNvbnN0cnVjdGVkIGRhdGFzZXQ6IFN1bSBvZiBvdXRlciBwcm9kdWN0cyAoVSwgVikgbXVsdGlwbGllZCBieSBTIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgRmVhdHVyZSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CnBsb3RfVV9mdW4oc3ZkNF83OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IEZlYXR1cmUgdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJVIHggUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgU2luZ3VsYXIgdmFsdWVzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfU19mdW4oc3ZkNF83OSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlM6IFNpbmd1bGFyIHZhbHVlcyAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBJdGVtIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9WX2Z1bihzdmQ0Xzc5LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVjogSXRlbSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlYgeCBTOiBJdGVtIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBQbG90dGluZyBpbiBkaW1lbnNpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW5faXRlbShzdmQ0Xzc5LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkNF83OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDRfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW5fcHJvcChzdmQ0Xzc5LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDRfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkNF83OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2FwYWNpdGllcyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgoKIyMjIENoaWxkcmVuLCA0LTZ5CgpgYGB7cn0Kc3ZkNF80NiA8LSBzdmQoZF80NiAlPiUgCiAgICAgICAgICAgICAgICAgbWVhbl9jZW50X2Z1bigiY2hhcmFjdGVyIiwgYWdlX2dyb3VwID0gImNoaWxkcmVuIikgJT4lCiAgICAgICAgICAgICAgICAgY29sdW1uX3RvX3Jvd25hbWVzKCJjYXBhY2l0eSIpLAogICAgICAgICAgICAgICBucm93KGRfNDYpLCBucm93KGRfNDYpKQpgYGAKCiMjIyMgUmVjb25zdHJ1Y3RlZCBkYXRhCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CnBsb3RfcmVjb25zdHJ1Y3RfZnVuKHN2ZDRfNDYsIHRyYW5zcG9zZSA9IFRSVUUsICJjaGlsZHJlbiIpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJSZWNvbnN0cnVjdGVkIGRhdGFzZXQ6IFN1bSBvZiBvdXRlciBwcm9kdWN0cyAoVSwgVikgbXVsdGlwbGllZCBieSBTIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgRmVhdHVyZSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CnBsb3RfVV9mdW4oc3ZkNF80NiwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IEZlYXR1cmUgdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJVIHggUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgU2luZ3VsYXIgdmFsdWVzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfU19mdW4oc3ZkNF80NikgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlM6IFNpbmd1bGFyIHZhbHVlcyAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBJdGVtIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9WX2Z1bihzdmQ0XzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVjogSXRlbSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlYgeCBTOiBJdGVtIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBQbG90dGluZyBpbiBkaW1lbnNpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW5faXRlbShzdmQ0XzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkNF80NiwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDRfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW5fcHJvcChzdmQ0XzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDRfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkNF80NiwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2FwYWNpdGllcyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgoKIyMjIENoaWxkcmVuLCA0LTl5CgpgYGB7cn0Kc3ZkNF80OSA8LSBzdmQoZF83OSAlPiUKICAgICAgICAgICAgICAgICBtdXRhdGUoY2hhcmFjdGVyID0gcGFzdGUoY2hhcmFjdGVyLCAiNzkiLCBzZXAgPSAiXyIpKSAlPiUKICAgICAgICAgICAgICAgICBiaW5kX3Jvd3MoZF80NiAlPiUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGUoY2hhcmFjdGVyID0gcGFzdGUoY2hhcmFjdGVyLCAiNDYiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwID0gIl8iKSkpICU+JSAKICAgICAgICAgICAgICAgICBtZWFuX2NlbnRfZnVuKCJjaGFyYWN0ZXIiLCBhZ2VfZ3JvdXAgPSAiY2hpbGRyZW4iKSAlPiUKICAgICAgICAgICAgICAgICBjb2x1bW5fdG9fcm93bmFtZXMoImNhcGFjaXR5IiksIAogICAgICAgICAgICAgICBucm93KGRfNzkpICsgbnJvdyhkXzQ2KSwgbnJvdyhkXzc5KSArIG5yb3coZF80NikpCmBgYAoKIyMjIyBSZWNvbnN0cnVjdGVkIGRhdGEKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC42N30KcGxvdF9yZWNvbnN0cnVjdF9mdW4oc3ZkNF80OSwgdHJhbnNwb3NlID0gVFJVRSwgImNoaWxkcmVuX2NvbWIiKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiUmVjb25zdHJ1Y3RlZCBkYXRhc2V0OiBTdW0gb2Ygb3V0ZXIgcHJvZHVjdHMgKFUsIFYpIG11bHRpcGxpZWQgYnkgUyIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEZlYXR1cmUgdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuKHN2ZDRfNDksICJjaGlsZHJlbl9jb21iIiwgdHJhbnNwb3NlID0gVFJVRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IEZlYXR1cmUgdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJVIHggUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgU2luZ3VsYXIgdmFsdWVzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfU19mdW4oc3ZkNF80OSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlM6IFNpbmd1bGFyIHZhbHVlcyAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBJdGVtIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KcGxvdF9WX2Z1bihzdmQ0XzQ5LCAiY2hpbGRyZW5fY29tYiIsIHRyYW5zcG9zZSA9IFRSVUUsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBJdGVtIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiViB4IFM6IEl0ZW0gdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFBsb3R0aW5nIGluIGRpbWVuc2lvbnMKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9WX2Z1bl9pdGVtKHN2ZDRfNDksICJjaGlsZHJlbl9jb21iIiwgdHJhbnNwb3NlID0gVFJVRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikgKwogIHNjYWxlX2NvbG9yX21hbnVhbChndWlkZSA9ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYyhyZXAoImJsYWNrIiwgOSksIHJlcCgiZG9kZ2VyYmx1ZSIsIDkpKSkKCnBsb3RfVl9mdW5faXRlbShzdmQ0XzQ5LCAiY2hpbGRyZW5fY29tYiIsIHRyYW5zcG9zZSA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikgKwogIHNjYWxlX2NvbG9yX21hbnVhbChndWlkZSA9ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYyhyZXAoImJsYWNrIiwgOSksIHJlcCgiZG9kZ2VyYmx1ZSIsIDkpKSkKCnBsb3RfVl9mdW5faXRlbShzdmQ0XzQ5LCAiY2hpbGRyZW5fY29tYiIsIHRyYW5zcG9zZSA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikgKwogIHNjYWxlX2NvbG9yX21hbnVhbChndWlkZSA9ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYyhyZXAoImJsYWNrIiwgOSksIHJlcCgiZG9kZ2VyYmx1ZSIsIDkpKSkKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW5fcHJvcChzdmQ0XzQ5LCAiY2hpbGRyZW5fY29tYiIsIHRyYW5zcG9zZSA9IFRSVUUsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkNF80OSwgImNoaWxkcmVuX2NvbWIiLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDRfNDksICJjaGlsZHJlbl9jb21iIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgoK